Neurohazard
暮雲煙月,皓首窮經;森羅萬象,如是我聞。

渗透测试TIPS之Web(一)

wpadmin~August 8, 2018 /InfoSec

渗透测试TIPS之Web(一) 原创: 帅气的Jumbo 中国白客联盟 2018/8/8

侦查

1、绘制攻击面;

2、寻找子域名、ip、电子邮件,harvester是个不错的工具,可以使用如

python theHarvester.py -d chinabaiker.com -n -c -t -b google

查找相关信息;

3、一个不错的OSINT工具框架网址:http://osintframework.com/

4、查找其对应的服务、banner信息和版本信息,然后根据信息去搜寻对应的cve漏洞信息和去exploit-db上查找公开的exp信息;

5、通过https://web-beta.archive.org/搜索历史网页;

6、检查robots.txt、crossdomain.xml和clientaccesspolicy.xml;

7、查找host信息命令:

$ dig chinabaiker.com a; @8.8.8.8 # types: a, mx, ns, soa, srv, txt, axfr

$ dig -x chinabaiker.com # reverse lookup

8、在谷歌上利用site:chinabaiker.com命令查找相关的信息泄漏;

9、利用https://wappalyzer.com/查找如中间件、语言、后端和服务等相关信息;

10、寻找隐藏的文件夹,如使用

https://c.darenet.org/nitemare/SecLists/tree/master/Discovery/Web_Content

里面的字典进行fuzz

$ dirb http://www.chinabaiker.com wordlists/dirb/common.txt

$ nikto -host http://www.chinabaiker.com

11、利用自动化和主动式爬取应用程序的所有功能,发现隐藏内容;

12、确定入口点、技术点、确定该应用程序是做什么的、如何做到的、绘制攻击面、有哪些危险功能、框架版本其相关版本的cve漏洞信息等;

13、阅读web应用程序的客户端代码,包括它使用的是什么javascript库;

14、检查所有页面中的评论;

15、一些错误页面容易受到xss攻击;

16、观察所有参数,记录哪些参数用户get和post,看看是否能够把post转换成get;

17、观察cookie信息,包括添加、设置、删除等

18、定位header头信息

$ ./whatweb www.chinabaiker.com # identifies all known services

$ dirb https://www.chinabaiker.com /usr/share/wordlists/dirb/common.txt # bruteforce

19、使用Shodan查找类似的应用程序、端点、SSH哈希密钥;

20、查找网站之前的历史漏洞。Recon-ng是个不错的工具

use recon/domains-vulnerabilities/xssposed; set source chinabaiker.com; run

21、RTFM – 在应用程序上添加DEBUG=TRUE测试是否有开发模式,是否能发现一些敏感信息;

22、测试api是否有未授权访问;

23、以攻击者的角度看待应用程序,发现应用程序最有价值的地方,比如有的时候绕过用户付费比xss跨站漏洞更有价值;

24、测试是否有逻辑漏洞;

25、如果在进行一个赏金任务,记得看下是否有新业务上线,包括一些新的代码、新的app、新的ui等;

测试输入输出

1、测试相关文件是否有备份文件,如.old、.bak

2、利用burp、nikto和dirb对web应用程序进行自动化扫描;

3、利用wpscan来对wordpress网站包括插件进行扫描攻击

4、利用cmsmap来寻找durpal和joomla的相关漏洞;

5、利用flashbang解码swf文件;

6、根据反射参数测试相关漏洞:xss、hpp、link manipulation、template injection

7、测试服务器问题(基于错误、布尔、outband、数字、单引号、双引号、),如sql注入、服务端包含、命令执行、路径遍历、 本地和远程文件包含、smtp注入、soap注入、xxe、ldap注入、xpath注入、代码之星、反序列化等;

8、如果参数里带有类似file参数,可以尝试目录遍历、文件包含等漏洞;

9、如果参数里带有类似url参数,可以尝试url跳转、ssrf等漏洞;

10、当应用程序解析xml、json时,可以测试注入、ssrf、xpath、xxe等漏洞;

11、如果参数进行如base64编码,测试攻击时也需要进行相应的编码;

12、查找基于dom的攻击,如重定向、xss等漏洞;

13、测试文件上传漏洞时,可以上传svg,利用svg来达到ssrf、xxe等漏洞;

14、在上传头像时,可以上传svg来进行恶意攻击;

服务端问题

1、http和https请求之间尝试相互转换;

2、尝试头部注入;

3、测试http请求,尝试利用任意请求方法来绕过身份验证页面;

4、测试客户端的任何程序,如flash、acticex和silverlight;

5、在测试文件上传时,可以上传双扩展名(.php5.jpeg)和使用空字节(.php5%00.jpeg)

6、尝试测试csrf;

7、如果存在以root权限运行的二进制文件,则应仅使用https验证校验或使用公钥进行检查;

8、尝试验证码绕过;

9、尝试框架注入;

10、尝试缓存中毒;

11、寻找url参数中的敏感数据;

12、寻找各种敏感信息;

13、根据数字id进行如订单越权等;

14、多尝试测试swf;

15、测试ssh弱协议;

16、测试cors策略。如果cors策略或crossdomain.xml允许子域,则可以利用子域向主域发起xss等漏洞;

17、尝试绕过CSP;

18、验证http严格传输安全性(HSTS);

19、验证X-XSS-Protection;

20、验证X-Content-Type-Options;

21、验证http公钥固定;

测试认证

1、利用burp查看认证信息;

2、401爆破

$ nmap -d -vv -p 80 –script http-brute –script-args http-brute.path=/ www.chinabaiker.com

3、测试弱口令,如空密码、空用户名、123456

4、枚举用户名;

5、测试找回密码功能,测试smtp头注入;

6、测试remember me功能;

7、在账号中删除旧的邮箱地址,添加新的邮箱,测试旧的邮箱是否还能够进行密码找回;

8、尝试不输入密码的情况下进行敏感操作;

9、密码爆破时,虽然会提示锁定,但是很可能遇到正确密码以后还是能够登录;

10、在修改密码时,尝试进行对之前登录时会锁定的密码进行爆破;

11、测试电子邮件验证邮件是否通过http传输;

12、cookie是否添加httponly、secure属性;

13、测试oauth身份验证,确保在后端是由google或第三方生成的id令牌:

https://developers.google.com/identity/sign-in/web/backend-auth#verify-the-integrity-of-the-id-token

14、测试其他的访问控制方法:https://t.co/z84ajd7bmO

15、“记住我”的功能是否会过期,查看cookie中是否有能够利用的空间;

16、测试用户唯一性;

17、测试如账号密码是否直接在url中传输;

18、在用户名和密码字段中测试空字符(%00);

19、测试用户登录失效时间;

20、尝试在请求中添加cookie信息,有些应用会读取参数并将其设置为cookie;

21、设置新密码时尝试使用老密码;

测试会话管理

1、session是否具有随机性、超时时间、是否允许多个用户同时在线;

2、测试session的含义;

3、session生成是否是可预测的,可以利用brupsuite的sequencer进行辅助测试;

4、测试javascript能否访问token;

5、测试自定义令牌能否污染日志;

6、测试令牌和会话是否绑定,能否重复使用;

7、检查会话终止;

8、检查会话固定;

9、检查cookie能否劫持用户会话;

10、检查XSRF;

11、测试是否可以在其他网站的应用程序上下文中执行认证动作;

12、检查cookie是否限定在当前域,是否设置了httponly、secure属性;

13、测试访问控制功能;

14、利用多个用户测试控件有效性;

15、测试不安全的访问控制方法,如请求参数、referer头等;

16、持久性cookie;

17、Session tokens 强度;

18、授权测试;

测试业务逻辑

1、一般最后一步测试这些问题,因为这时我们已经得知应用程序一般都会在哪里出现问题;

2、识别逻辑攻击面;

3、确定应用程序是做什么的,最有价值的是什么,攻击者想要什么;

4、通过客户端测试数据传输;

5、测试pc应用和手机应用;

6、测试客户端输入验证;

7、应用程序是否尝试将逻辑基于客户端,比如表单是否具有可以使用浏览器编辑的最大长度客户端;

8、测试厚客户端组件(java、activex、flash);

9、应用程序是否使用Java,Flash,ActiveX或Silverlight之类的东西?下载applet并进行逆向工程;

10、测试业务逻辑,测试能否绕过付款;

缓存攻击

1、如果仅验证路径,则可以提交恶意headers来达到缓存错误的结果;

2、条件竞争,获取他人数据;

3、header头注入,注入新的响应,可能会缓存攻击者控制的恶意响应;

4、使用多个主机头或x-forwarded-host,可能会导致缓存加载攻击者的站点并为其提供服务;

5、dns缓存中毒:攻击者对缓存的dns服务器创建虚假响应,所有用户在TTL之前都会收到错误的响应;

6、侧通道攻击:利用噪声、热量、电磁波进行攻击;

7、脱机web应用程序缓存中毒:利用iframe缓存钓鱼网站;

其他

1、测试wordpress站点:

$ wpscan -url http://$ip/ -enumerate p

2、wordpress密码爆破

$ python patator.py http_fuzz url=http://$ip/wp-login.php raw_request=rawlogin 0=/usr/share/rockyou.txt -l /tmp/login &; tail -f /tmp/login | grep 302

3、判断指纹

$ ./clusterd.py –fingerprint -i $ip BlindElephant.py $ip

4、请求具有特定密码的站点

$ curl –ciphers ECDHE-RSA-AES256-SHA https://$ip

5、反混淆JS

JStillery, JSNice

OAuth2

1、测试服务器是否允许在没有任何密码的情况下对用户身份进行验证;

2、认证流程:

a.用户点击登录facebook

b.用户被重定向到facebook 

http://facebook.com/oauth?redirect_uri=target.com%2fcallback&state=xyz

c.如果登录成功,url被重定向到target.com

d.浏览器发出包含状态值的请求

e.客户端应验证状态值以防止csrf

3、以上可能存在的问题

a.使用包含授权代码的重定向url让受害者访问

b.url跳转:redirect_uri设置为chinabaiker.com时,当用户被重定向时,攻击者能否读取授权码

c.访问令牌复用:攻击者利用受害者的令牌进行非授权访问

DNS重绑定

1、攻击者控制attacker.com的DNS服务器;

2、用户访问attacker.com;

3、NS响应attacker.com的A记录、ip地址等;

4、浏览器获取资源,如/secrets

5、DNS响应过期,现DNS服务器使用victim.com的IP进行响应;

6、浏览器将在attacker.com源中获取victim.com/secrets信息;

7、攻击者可以将CNAME条目返回给爆破的内部主机名;

跨域请求

1、浏览器将执行具有标准内容类型的GET请求和POST

2、否则,浏览器将执行OPTIONS请求并检查CORS头信息

原文链接:https://guif.re/webpentest

Leave a Reply

Your email address will not be published. Required fields are marked *