|
<
布景:
团队内乱一名资深同事正在客岁给各人share了最新的OWASP Top 10 的变革和内乱容,并结合了OWASP的Juice Shop停止讲解,内乱容十分烦琐易懂,让我以最简朴的方法理解到了宁静测试是甚么,期望经由过程收拾整顿,让更多的人有所理解
情况筹办:
1、Juice Shop Github 地点 请根据此中Docker Container 部门拆建情况,我采取的是 v7.5.1那个版本,以是第2,3步响应的变成
- docker pull bkimminich/juice-shop:v7.5.1
- docker run --rm -p 3000:3000 bkimminich/juice-shop:v7.5.1
复造代码 装置胜利并启动后
网页中翻开localhost:3000,便可看到Juice Shop的尾页
2、Charles,下载装置,免费试用一个月
理论 - OWASP Top 10
起首 OWASP 是 Open Web Application Security Project 的缩写,一个非红利性构造, 详情请自止Google
下图为2013年战2017年的比照版本:
A1:2017 - 注进
锻炼1 预定圣诞节特供(已删除的商品):
步调1: 翻开Juice Shop的尾页
步调2:翻开DevTools -> Network, 用delete按钮肃清恳求
步调3:正在Search的处所甚么皆不用输进,面击search搜刮,并正在Network中找到收收的恳求 http://localhost:3000/rest/product/search?q=,看Response中有返回数据,一共有28条数据
步调4:正在search的输进框里输进 '; 然后面search,会正在Network里看到收回来另外一条恳求并且报错,查抄后找到报错内乱容
- sql: "SELECT * FROM Products WHERE ((name LIKE '%';%' OR description LIKE '%';%') AND
- deletedAt IS NULL) ORDER BY name”
复造代码 步调5:找到输进内乱容拼接的处所,停止修正,正在search的输进框里输进 '))-- 然后再面击Search按钮,检察Response里的返回数占有32条
视频:
锻炼2 登录办理员用户
步调1:进进Login 页里
步调2:输进随便账户战暗码获得一个毛病
步调3:尝尝 '# 便会看到报错疑息,找到此中的SQL语句
- "sql":"SELECT * FROM Users WHERE email = ''#' AND password = 'e855b45052de9a85655f584589edd0f9'"
复造代码 步调4:按照堕落面,从头输进 ’ or 1=1-- 胜利登录办理员账户了
锻炼3 找到办理员页里
步调1:正在DevTools里面Source Tab,找到dist目次,面juice-shop.min.js,搜刮 ‘administr’ 那个字符串,会找到一个页里url ‘/administration’
步调2:正在上一个账户里,将URL中的search交换成administration,
- http://localhost:3000/#/search
- http://localhost:3000/#/administration
复造代码 步调3:您便会晤到用户战Comments
A2:2017 - 生效的身份认证
锻炼4 变动Bender的暗码
步调1:正在A1的锻炼2中的办理员页里,找到Bender的Email
步调2:操纵SQL注进的方法,即正在login的账户中输进 bender@juice-sh.op’-- 进进到Bender的账户,能够面击Contact Us考证,会看到Author的处所有Bender的显现
步调3:翻开DevTools -> Network, 浑空恳求,面上边的 Change Password, 别离正在当前暗码,新暗码,反复新暗码三个输进框输进随便字符串,察看恳求
步调4:翻开新Tab,正在新Tab平分别停止以下3中测验考试
- http://localhost:3000/rest/user/change-password?current=A # 401Password cannot be empty
- http://localhost:3000/rest/user/change-password?current=A&new=B # New and repeated password do not match.
- http://localhost:3000/rest/user/change-password?current=A&new=B&repeat=C # New and repeated password do not match.
复造代码 步调5:推测能否能够没有给默许暗码,停止第4次测验考试,胜利。
- http://localhost:3000/rest/user/change-password?new=B&repeat=B # 200 success
复造代码 A3:2017 - 敏感数据保守
例子5 上个例子中修正暗码时,暗码是MD5减稀的,十分简单反解稀
例子6 非手艺上,请没有要把您的暗码暴光到网上
A4:2017 - XML 内部真体 (XXE)
参考援用:XML内部真体(XXE)注进详解
A5:2017 - 生效的会见掌握
锻炼7 0星评价
步调1: 进进 Contact Us
步调2:其他内乱容皆挖好,没有给 星星 好评
步调3:Submit 按钮是没有让面的
步调4:面上3星好评,但坐马面失落
步调5:能够Submit了,胜利
例子8 之前例子中提到的/administration页里,实际上是只要办理员能够会见那个页里的,可是能够经由过程扫描源文件或暴力破解的方法查到
例子9 扫描同时能够找到一个被程序员忘记了的备份文件夹
网上有许多开源扫描东西能够用,做为锻炼,可使用owasp zap
锻炼10 获得其别人购物车数据
步调1:用 ‘admin@ juice-sh.op/admin123’ 登录
步调2:翻开Charles, 为了利用Charles,需求把URL交换成以下的URL,如许便没有需求设置代办署理了
- http://localhost.charlesproxy.com:3000/#/search
复造代码 步调3:面购物车,DevTools中会看到收回来的恳求http://localhost.charlesproxy.com:3000/rest/basket/1
步调4:basketid便是userid,正在Charles中修正那个URL,改成http://localhost.charlesproxy.com:3000/rest/basket/3,意味着我希冀正在我的账户中恳求Bender的购物车数据,然后施行,便会看到本人的购物车里显现的是Bender购物车里的数据
锻炼11 变动定单让本人钱包兴起去
步调1:正在购物车中面增长商品数目,截获恳求http://localhost.charlesproxy.com:3000/rest/basket/3
步调2:修正返回的response,就能够看到总价变成了背数
锻炼12 重定背到指定网址
步调1:将鼠标滑动到左上角的Fork me on Github, 正在DevTools的页里中能够看到,a标签的href属性有个重定背地点
步调2:将href的链接改成 redirect?to=https://谷歌.ie, 然后面击页里的Fork me
步调3:您会获得一个毛病页里,可是假如您将值改成redirect?to=https://谷歌.ie/?https://github.com/bkimminich/juice-shop,便会胜利将网页带到Google来,胜利
A6:2017 - 宁静设置 毛病
久无
A7:2017 - 跨站剧本进犯
反射性XSS:APP战API皆有已颠末滤的用户输进做为网页的一部门输出
存储型XSS:APP或API会存储已颠末任那边理的用户输进,那些数据正在将来会被检察
DOM型XSS:JS框架或SPA会静态引进进犯者可操作的数据
锻炼13 反射型XSS进犯
反射型进犯意义便是歹意的query间接去自受害者收收进来的恳求。
步调1:正在启动了Juice Shop的网站,间接会见http://localhost:3000/#/search?q=%3Cscript%3Ealert(%22XSS1%22)%3C%2Fscript%3E,面击回车后会发明后边的部门曾经变成
锻炼14 反射型XSS进犯
步调1:
测验考试会见上面的链接
- http://localhost:3000/#/search?q=%3Cscript%3Edocument%2EquerySelector%28%22%2Enavbar%2Dlogo%22%29%2EsetAttribute%28%22src%22%2C%22%2Fpublic%2Fimages%2Fproducts%2Fapple_juice%2Ejpg%22%29%3B%3C%2Fscript%3E
复造代码 实在它此中实正念表达的意义是施行那段code
- document.querySelector(".navbar-logo").setAttribute("src", "/public/images/products/apple_juice.jpg");
复造代码 它将您的主站logo改成了杯子战樱桃的图片,左上角
锻炼15 反射型XSS进犯
步调1: 测验考试上面的链接
- http://localhost:3000/#/search?q=%3Cspan%3Ea%3C%2Fspan%3E
复造代码 会发明 Search Results中间多了一个a,那意味着不只歹意的payload会被施行,同时页里中另有能够试图显现已颠末任那边理的输进
锻炼16 耐久化的XSS进犯
步调1: 翻开charles
步调2:正在注册界里,注册一个账号,charles中会看到一个API
步调3:选中users下/,面击上边灰色的六边形框,Enable Breakpoints
步调4:正在注册页里再挖写一个注册用户的疑息,然后面击Register,Charles会捕获到那个恳求,然后断面正在那边,这时候,曾经绕过了前端对Email的校验,筹办收恳求了
步调5:正在charles的断面当选择Edit Request Tab,和底部的JSON Text,留意是JSON Text,假如您选了JSON会发明,正在那边边编纂Email,会停止字符截断,可是挑选JSON Text没有会,将此中Email的值改成,然后面击底部的Execute,那个恳求便会收回来,然后Response归来借会进到那里,持续面击Execute便止,如许注进疑息便会被记载到数据库中耐久化下去
步调6:没有明白各人借记得之前的/administration页里吗,测验考试用随便一个账户登录,然后会见那个页里,便会看到有XSS2的弹窗,耐久化XSS进犯胜利
步调7:由于正在办理员页里,有显现一切账户的Email,当我们的注进被读与时,便会发生影响
锻炼17 耐久化的XSS进犯
步调1 - 步调4 同上
步调5:一样的办法,将Email 改成,其他不异
步调6:仍旧是会见/administration页里,便会看到页里布景色变成粉色
锻炼18 底子不用前真个耐久化XSS进犯
步调1:正在search页里里,面击某一个商品的logo,留意检察DevTools里有会有如许一个恳求
步调2:截与此中一部门,间接翻开另外一个Tab,粘揭出来
- http://localhost.charlesproxy.com:3000/api/Products/1
复造代码 步调3:会看到以下的Response,并且那是一个Get恳求
- {
- "status": "success",
- "data": {
- "id": 1,
- "name": "Apple Juice (1000ml)",
- "description": "test",
- "price": 1.99,
- "image": "apple_juice.jpg",
- "createdAt": "2019-04-09T08:19:13.430Z",
- "updatedAt": "2019-04-09T10:09:58.409Z",
- "deletedAt": null
- }
- }
复造代码 步调4:推测那个API也承受Post恳求,那我们接下去用Curl号令正在号令止里收一个Put恳求
- curl -X PUT "http://localhost:3000/api/Products/1" -H "Content-Type:application/json" --data-binary '{"description":"<script>alert("XSS3")</script>"}'
复造代码 步调5:会看到Response 胜利了,正在search页里任何用户会见Products页里城市看到XSS3弹窗,进犯胜利
A8:2017 - 没有宁静的反序列化
锻炼19 施行一个DoS进犯
步调1:用野生查抄或主动化URL发明东西,会找到一个Swagger API 文档,
http://localhost:3000/api-docs/#/Order/post_orders
步调2:会看到一个Orders的Post恳求,看到此中的Example中orderLinesData字段能够是随便的Json数据
步调3:翻开DevTools后面击Swagger中Try it Out,和Execute,看到"No Authorization header was found"的Error
步调4:回到方才的search页里,翻开DevTools,用随便账号登录,检察whoami那个API,找到Authorization
步调5:将方才找到的Authorization内乱容放到Swagger里左上角有一个Authorize的输进框里
步调6:再Execute一下,看到准确的Response
步调7:接下去我们施行一个DoS进犯,DoS即回绝效劳
步调8:正在Value中将orderLinesData那一止改成并Execute
“orderLinesData”: “(function dos() { while(true); })()”
步调9:看Response便发明逝世轮回的代码曾经正在server里施行了,进犯胜利
A9:2017 - 利用露有已知破绽的组件
锻炼20 找到硬件中利用的组件
步调1:面菜单中About Us,正在面击笔墨中独一的链接,留意察看那个URL的地点,此中露有 /ftp/legal.md?md_debug=true
步调2:截断ftp后边的部门,回车,会看到被程序员忘记了的备份文件,面击此中的package.json.bak下载,看到Error提醒,只要以md战pdf末端的文件能够下载
步调3:将package.json.bak改成package.json.bak%2500.pdf试一下,下载胜利,查抄那个json文件中有
“sanitize-html”: “1.4.2”
接下去就能够操纵1.4.2版本的sanitize-html中已知的宁静破绽来进犯网站了,查找胜利
A10:2017 - 不敷的日记记载战监控
锻炼21 记载没有宁静的测验考试
步调1:追念之前的下载测验考试,假如有充分的Log记载,如许的举动是该当被记载的
步调2:翻开另外一个号令止窗心,施行
docker ps
步调3:找到您正正在运转的Container, bkimminich/juice-shop:v7.5.1,施行
docker exec -it container_id sh
ls
步调4:看到一个相似access.log.2018-10-25的文件
步调5:施行
tail -f access.log.2018-10-25
步调6:当您进进search页里的时分,记了许多Log,但再测验考试下载上边的文件时,并出有响应的Log记载,实在有许多疑息皆是能够记载正在Log里的,但结合之前的A3,又不该该记载太多敏感疑息
总结
至此,年夜部门的状况皆曾经经由过程例子或锻炼share给各人了,那些只是我粗浅的了解,但便那些工具假如我们能触类旁通,也是能够发明很多成绩大概防备很多成绩的
参考:
https://www.owasp.org/images/6/67/OWASP_AppSec_Research_2010_OWASP_Top_10_by_Wichers.pdf
最初: 能够存眷公家号:悲伤的辣条 ! 出来有很多材料同享!材料皆是面试时面试民必问的常识面,也包罗了许多测试止业常睹常识,此中包罗了有底子常识、Linux必备、Shell、互联网程序道理、Mysql数据库、抓包东西专题、接心测试东西、测试进阶-Python编程、Web主动化测试、APP主动化测试、接心主动化测试、测试初级连续散成、测试架构开辟测试框架、机能测试、宁静测试等。
正在那里我背各人保举一个主动化进修交换群。交换进修群号:914172719 里面会分享一些资深架构师录造的测试有闭视频录相…
假如我的专客对您有赞助、假如您喜好我的专客内乱容,请 “面赞” “批评” “珍藏” 一键三连哦!
好文保举
转止面试,跳槽面试,硬件测试职员皆必需明白的那几种面试本领!
面试经:一线都会搬砖!又里硬件测试岗,5000便满足了…
面试民:事情三年,借去里低级测试?生怕您的硬件测试工程师的头衔要减单引号…
甚么样的人合适处置硬件测试事情?
谁人准面上班的人,比我先降职了…
测试岗重复跳槽,跳着跳着便跳出了…
免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作! |
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
|