更多课程 选择中心

软件测试培训
达内IT学院

400-111-8989

“appscan 我算是跟你干上了”


像我这种甲方的安全工程师检测Web Application的安全性靠自己去做系统的渗透测试肯定是不可能的了,Web扫描器成为了我的依靠。

话说之前一直觉得免费的软件肯定没有付费的好嘛,那么是不是从绿盟啊启明星辰这种安全厂商购买的扫描器比AppScan好用呢?后来一想不对啊,AppScan也是IBM的付费软件啊,查了一下一年的使用费也20多万人民币呢。只不过我用的破解版。。。

为了完成组织上交代的任务,修复扫描出来的这些漏洞,跟程序员大哥们和谐友好的磋商是不可避免的了。最近涉及到的几个漏洞,为了去协助程序员大哥修复也好好的研究了一下AppScan的测试方式。

我接触到的高危基本就这么三类

1、SQL注入、盲 注

2、XSS

3、被解密的登录请求

第三个最容易理解了,就是登陆界面的用户名密码传送给服务器的过程中没有任何加密。AppScan在测试的时候就是分析出哪里是登陆页面,哪些参数是用户名密码,一般就user、password这样。然后对请求包进行抓包分析,默认AppScan填入的参数是1234.如果抓到发现就是裸的1234,那么就会爆这个漏洞。修复方式当然最好是能做到HTTPS,但是总会因为各种各样的原因不能做成HTTPS,于是程序员大哥选择了前端JS脚本加密的方法。修复之后我自己拿burp抓包看是加密过的,但是再扫一遍还是会存在这个漏洞。而且查看AppScan抓到的请求包里面还是明文。是因为AppScan只认HTTPS?还是它把前端JS脚本禁用了等于没加密?不太懂这里。

第二个呢 跨站脚本

这个不是AppScan测的是某程序员大哥用的某扫描器,但是让我帮忙协助分析了一下。验证漏洞的请求包如下:

date1=><ScriPt>alert(777)</ScriPt>&date2=2099-01-01&gglx=0&id=61234&loadnum=0&msg=61234&pageNo=1

扫描器在参数date1后面插入了脚本语句<ScriPt>alert(777)</ScriPt>,发送给了服务器没有收到任何阻拦。然后检测服务器的响应包,在包内发现了植入的危险语句,并且得到了浏览器的执行。说明服务器端并没有对危险语句进行过滤,而且会将该语句放在响应包内返回,由此得出该web存在跨站脚本漏洞。

:哥你得在服务器端做过滤啊

:哦

第三个SQL注入、盲注

盲注放后面说先说【SQL注入】

在查询数据的请求包里AppScan在用户数据处插入了含有SQL命令的参数数据,然后在服务器的响应包里发现了oracle的报错信息。这说明AppScan所插入的命令确实被数据库所执行了,虽然不是什么有害信息只是一个报错。但是服务器理应发现用户输入包含有危险字符将其过滤,不应使其到达数据库层。如果是精心设计过的注入语句,那么将得到有害的执行。这说明该网站存在SQL注入漏洞。

:哥你得在服务器端做过滤啊

:我们后台入库都是用的java的PreparedStatement,这个本身就能防止参数的注入写法。虽然能收到Oracle的报错,但是是注入不进来的。

:哦。。。(PreparedStatement是啥...赶紧百度...)

使用PreparedStatement的好处是数据库会对sql语句进行预编译,下次执行相同的sql语句时,数据库端不会再进行预编译了,而直接用数据库的缓冲区,提高数据访问的效率,如果sql语句只执行一次,以后不再复用。

SQL注入 攻 击 只 对 Statement有效, 对 PreparedStatement 是无效的;

PreparedStatement可以在传入sql后,执行语句前,给参数赋值,避免了因普通的拼接sql字符串语句所带来的安全问题,而且准备sql和执行sql是在两个语句里面完成的,也提高了语句执行的效率 比如单引号会给你加一个转义,加个斜杠。

然后今天早晨在某网站上又扫到了两个SQL盲注

SQL盲注和SQL注入有啥区别?SQL盲注是纯手工测出来的,SQL注入不是?

那SQL注入AppScan也只是添加了危险字符引得数据库报错而已啊。AppScan的检测方式上到底是什么区分SQL注入和SQL盲注的呢。

盲注AppScan对参数修改了四次,发送了四次请求包,每个请求包都对在参数上添加的SQL语句进行了修改,多一个单引号,或者挪一下位置什么的。然后拿他们的响应包与原始包(未经修改)的响应包做对比。然后说结果返回的包并不一样,所以得出可能存在危险性有SQL盲注。蛋疼的是他喵的我肉眼观察明明特么的就是都一样啊!明明四个请求包的返回包一模一样,琢磨了一上午也没明白为什么把这个漏洞标为盲注,有没有路过的大哥能给我讲个清楚。

看着HTTP包怎么也想不明白的我拿Burp打算自己改包发送试试,然后有意思的事情来了,用户名是x1aoh0n。我添加了x1aoh0n'+''转码后在burp里发了出去。然后有意思的事情不在返回包里,肉眼看到在网页的文本输入框内 出现了【x1aoh0n/'+/'/'】的字样。。。是把单引号都转义了啊。。。重点是你特么怎么还给显示出来了呢。。。然后百度如何绕过单引号转义实现sql注入。修改语句后提交,boom,可能是成功了?【该网页无法显示】大概是被发现了之后,我的IP被屏蔽了吧。。。

话说现在专栏更新的速率就定位一个月一次了吧,3月份的话工作上不得不提的就是struts2 s2-045的漏洞了吧。为了这个漏洞贡献出了我工作生涯中第一次加班:15分钟。

远程任意代码执行漏洞,凶。覆盖了目测超过10%的服务器?凶。抓好时间差赶紧把struts2升级就行了,在升级之前接到好几个补天白帽子提交的漏洞。大概因为漏洞类型是高危?每个奖励的钱都还不少呢,早知道我也网上下几个POC去找找。。。匿名领个几百块钱。。。

今天又出了S2-046,和S2-045危害一样作用范围一样,修复过045的046面对就也是安全的。

嗯,没啥想说的了,今天就这样吧。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:软件测试开发工程师们未来的职业发展规划
下一篇:黑盒测试进阶之用例精简,你值得拥有!

软件测试工程师有哪些岗位?

软件测试工程师要求?

软件测试项目去哪里找?

软件测试这个岗位今年如何?

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

陕西省

湖南省

贵州省

云南省

广西省

海南省