渗透测试思路:
1.找到所有输入点
先浏览一遍需要测试的功能模块,需要重点关注的有
- 修改头像
- 上传功能
- 参数位置
http方法测试:
- 改数据库包:OPTIONS方法
返回包会告诉你,服务器可以使用的http方法
- 尝试利用,就改为put,或者delete。
返回包会告诉你是允许还是不允许
允许的话,就可以利用。
比如put方法,就可以向服务器上写一句话木马
- 修复方案:
一般建议关闭除get,post,head之外的方法
SQL注入
测试流程:
一般测试就是在输入点加入,单引号或and或or
- 为什么这么测试呢?
一个单引号,发现页面改变,那么这个时候就说明网站没有过滤掉单引号,这个输入会对网站的Sql查询造成影响,那么这个点就很可能是一个注入点
and 1=1,and 1=2,如果前后页面不同,那么这个点就很可能是一个注入点,同理也是,因为你的输入会污染了原来的语句。
进阶测试:
- union select联合查询、爆数据库信息
- order by ,查字段数
思路:
猜测sql语句,是字符型还是数字型
利用:
一般存在注入的话,优先使用手工验证,因为用sqlmap跑的话,容易污染数据库。
sqlmap跑post数据包的时候,如果是下面这种数据,不像普通的键值对,那么就可以在其中某个参数加入*,接下来sqlmap跑的时候就会问你要不要测试这个参数。
<request type="json"><![CDATA[{"action":"resolve-data","dataResolver":"sdbf.security.userQxViewInterceptor#saveTxl","dataItems":[{"alias":"txl","data":{"$isWrapper":true,"$dataType":"v:sdbf.security.view.UserQxView$Txl","data":{"czryDm":"24406000076","xb":"0","yddh":"13225771111","jtdh":"","bgsdh":null,"czdh":null,"email":null,"msn":null,"qq":null,"$dataType":"v:sdbf.security.view.UserQxView$Txl","$state":2,"$entityId":"17"}},"refreshMode":"value","autoResetEntityState":true}],"context":{}}]]></request>
</batch>
文件上传测试
修改头像
有些是上传图片后,会经过渲染的,这种情况就比较难利用
文件上传
什么服务器软件对应什么上传的脚本?
Apache:
iis:任意文件上传后:
找路径, 如果文件是上传到web目录外的一个临时文件夹,就比较难利用。
- 任意文件上传后,但是不能利用,那么也算是危害吗?
算,
- 怎么修复任意文件上传的问题?
在后台,等文件上传到后台后再对文件的后缀进行条件判断,看看是不是属于非法的后缀名。
- 黑名单策略:
如果有一个比较完善的黑名单,这个策略也是可以使用的。
- 白名单策略:
如果一般是处理.xlsl,.doc,.txt,这些文档文件居多的话,建议使用白名单策略,这样就避免黑名单里面有漏的。
- 还有别的修复方法吗?
3,在测试gdpu内网的教务系统就碰到了,网站会重命名文件,比如你上传php,它会重命名为php.doc等。
4,不在web目录下,这个时候web就无权去访问上传的脚本了 。
6,最小的权限最大的安全。
程序报错测试
什么样的错误才算是程序报错?
修复方案
设置一个错误页面,统一返回那个页面
tips:
有时候web前端页面会返回一些错误,在数据的返回包中有更详细的错误数据
暴力破解测试
今天暴力测试居然一开始测的字段是用户名,应该是密码字段去爆破。
- 用户名爆破
密码爆破
- 密码字段爆破
用户名爆破
- 用户名和密码怎么同时爆破?
就是有2个payload 需要加载list
越权修改
今天遇到的情况是,服务器端只对原用户名和原密码是否相同进行验证,如果相同则允许修改。
这个时候在修改密码处,代理截包,遍历用户名。
那么同密码的用户均可以被修改。
弱口令测试
还是有定向思维以为返回是200,ok就是认证成功。
其实有一些是登录成功后,重定向(302)到另一个页面。
先是要用正确的口令测试,看看登录成功后返回的是什么状态码。
然后再依据这个去判断爆破。
之前只会看返回包的长度。
下次还可以试试,在登录成功后,截取一些信息,然后放进判断里面。
会话管理模式测试
不同浏览器,或者在不同机子上登录同一个账户后,还要试着看两边能不能进行操作。
csrf测试
用2个不同的账户,然后在修改资料处截包,替换cookie,看看能否修改他人资料。
tips:
如果客户需求的是测试某个网站相应的模块,就不要测试其余的模块,浪费时间且不符合客户的需求。
一般不要登录后,扫描,因为扫描器会对用户的数据造成无法恢复的影响。
但是基本的还是要扫描一下端口,一些基本的情况的信息,毕竟报告一开始需要写明这些基本信息。
post数据包,如果不能直接复现的话,那么就要写出相应的模块。貌似有很多post数据包都是不行的。